Accessのパスワード保護はどこまで守れる?暗号化の実力と限界
.accdbのデータベースパスワードはmdb時代より強力な暗号化でファイルを保護しますが、開いた後のユーザー権限管理や操作履歴の記録はできません。mdb・accdbの保護方式の違いと、機密データにはSQL Serverのアクセス制御が必要な理由を解説します。
結論:accdbのパスワードは保存データを暗号化するが、開いた後の権限管理は別の話
Access 2007以降の.accdb形式に設定するデータベースパスワードは、データを他のツールで読み取れない状態にします。正しいパスワードなしにAccessで開くことはできません。Microsoftは現行の暗号化を「以前のバージョンより強力な暗号化アルゴリズム」と公式ドキュメントで明記しており、mdb時代の保護方式とは設計が異なります。
ただし、正規のパスワードで開いた後の操作制限、ユーザーごとの権限の細分化、操作履歴の記録といった機能は、データベースパスワードの対象外です。機密性の高いデータを複数人で扱う業務では、パスワード一本では守り切れない範囲があります。
mdb時代のパスワードが弱かった理由
Access 95〜2003で使われた.mdb形式(Jet 3.x/4.0エンジン)でのデータベースパスワードは、暗号化というより難読化に近い保護方式でした。Microsoftの公式ドキュメントは「以前のバージョンのAccessで使用されていたものより強力な暗号化アルゴリズム」と現行版について述べており、旧来の方式が弱かったことを間接的に認めています。
旧.mdb形式の保護方式は現在ではセキュリティ境界として推奨されません。Access専門家のコミュニティを含む複数の分析で、この保護は「解除できてしまう場合がある」という事実が広く知られています。具体的な方法にはここでは触れませんが、.mdbを使い続けることには実質的なセキュリティリスクがあります。.accdbへの移行が根本的な対処です。
また.mdb形式ではユーザーレベルセキュリティ(ワークグループ情報ファイルを使ったユーザー/グループ単位の権限管理)という機能もありましたが、.accdb/.accde形式では利用できません。Microsoftのサポートページはこの方式を「セキュリティが時代遅れになった」と位置づけており、新規での利用は推奨されません。なお既存の.mdbファイルに設定済みのユーザーレベルセキュリティは現行Accessでも管理できますが、.accdbに変換すると設定は破棄されます(Microsoftサポート公式)。
.mdbのファイル形式について詳しく知りたい場合は.accdbと.mdbの違い|ファイル形式と変換手順も参照してください。
accdbのデータベースパスワードでできること・できないこと
Access 2007以降の.accdb形式でデータベースパスワードを設定すると、Microsoftの公式ドキュメントによれば「データを他のツールで読み取れない状態にし、データベースを使用するためのパスワードを設定する」と明記されています。パスワードなしにAccessでファイルを開くことはできなくなります。
一方、保護できない範囲も明確にしておく必要があります。
| 項目 | データベースパスワードで守れるか | 補足 |
|---|---|---|
| パスワードなしにファイルを開く行為 | 守れる | パスワードなしでは開けない(Microsoftの公式動作) |
| パスワードを知った人が開いた後の操作 | 守れない | データベースパスワード単独では、開いた利用者ごとにテーブルやクエリの権限を分けられない |
| ユーザーごとの権限制御(誰が何を見られるか) | 守れない | パスワードは1本。ユーザー単位の制限はできない |
| パスワードを知って開いた後のVBAコードの閲覧・改ざん | 守れない | VBAの保護にはVBAプロジェクトパスワードを別途設定する |
| 利用者の操作履歴の記録 | 守れない | データベースパスワード自体に操作履歴を記録する機能はない |
| パスワードを忘れた場合の復元 | 不可 | Microsoftもパスワードを取り出せないと公式に明記 |
パスワードは「ファイルを開く鍵」であり、「誰が何をしていいかを管理する仕組み」ではありません。パスワードを共有している人全員が同じ権限でアクセスできる、という点が運用上のリスクになります。
VBAコードの保護は別の設定が必要
データベースパスワードとは別に、VBAのコードを保護したい場合はVBAプロジェクトパスワードを設定します。VBEエディタ(Alt+F11で開く)のツールメニューから「VBAProjectのプロパティ」を開き、「保護」タブで「プロジェクトを表示用にロックする」にチェックを入れてパスワードを設定します。設定後はデータベースを閉じて再度開くとパスワードが有効になります。
ただし、このVBAプロジェクトパスワードも「通常のAccess操作による閲覧や編集を妨げる」仕組みであり、VBAソースを配布物に含めたくない場合は、コンパイル済み形式の.accde(実行専用ファイル)に変換する方法もあります。.accdeはVBAソースを除去しますが、テーブルやクエリなどデータベース全体の閲覧や利用を防ぐものではありません。詳細はaccde/mdeで中身が見られないAccess|解析して移行する方法で解説しています。
機密データを扱うなら、SQL Serverのアクセス制御が本筋
顧客情報や人事情報など、誰がアクセスできるかを細かく管理しなければならないデータをAccessで運用している場合、データベースパスワードだけでは要件を満たせないケースが多いです。
SQL Serverには、Windowsユーザーと連携したWindows認証、テーブル・列単位のアクセス許可、行レベルセキュリティ(RLS)など、Accessにはない認証・権限制御の仕組みが備わっています。Accessのフォームを残しつつデータだけをSQL Serverへ移す構成(アップサイジング)は、当社の実務経験上、既存画面に手を入れる範囲を絞れる場合が多いですが、VBAやクエリの実装によって改修範囲は変わります。
この構成の詳細はAccessの画面はそのまま、データだけSQL Serverへ移す構成で解説しています。現在のAccessファイルが解析できるか確認したい場合は無料の解析可否チェックもご利用ください。
Accessのデータベースエンジン(ACE/JET)がそもそもどういう設計かを知っておくと、なぜこうした制限が生まれるかの理解が深まります。AccessのJET/ACEエンジンとは|歴史・2GB制限・ファイル型の限界もあわせて参照してください。
「パスワードを忘れた」はどうなるか
.accdbにデータベースパスワードを設定した後にパスワードを忘れると、Microsoftの公式ドキュメントに「そのデータベースを使用できなくなります」と明記されています。Microsoftでもパスワードを取り出すことはできません。
パスワードの安全な保管と復旧手順の整備が不可欠です。IT部門がいる企業であれば、保管先・管理担当者・緊急時の連絡先を文書化し、複数人でエスクローしておくことが運用上の基本になります。
なお.mdb形式の場合、保護方式が.accdbより弱く、「解除できてしまう場合がある」という事実があります。.mdbのパスワード保護の弱さへの対処としては.accdbへの変換が有効ですが、.accdbにもユーザー別権限管理の機能はないため、権限制御が必要であれば別途SQL Serverなどの認証基盤が必要になります。
よくある質問
Q. データベースパスワードを設定すれば個人情報を安全に管理できますか。
ファイルを開くことへの防御にはなりますが、それだけでは不十分です。パスワードを共有している人は全員同じ権限でアクセスでき、ユーザーごとの操作制限や操作履歴の記録もありません。個人情報保護の観点からは、SQL Serverなどの認証基盤を持つシステムへの移行が根本的な対処です。
Q. VBAにパスワードをかければコードを完全に守れますか。
VBAプロジェクトパスワードは通常のAccess操作による編集を妨げる仕組みです。編集可能なVBAソースを配布物に含めたくない場合は.accdeへの変換が選択肢になりますが、.accdeはVBAソースを除去するものの、テーブルやクエリなどデータベース全体へのアクセスを防ぐものではありません。詳細はaccde/mdeの解説記事を参照してください。
Q. accdbのパスワードはどの程度の強度ですか。
Microsoftは「以前のバージョンより強力な暗号化アルゴリズムを使用する」と公式に述べており、.accdbはmdb時代の保護方式より強い暗号化で守られています。また、Access 2010ではAccess 2007より強い暗号化技術が導入されており、Access 2007でパスワードを設定したデータベースはパスワードを一度解除して再設定することでより強い暗号化に切り替えられると、Microsoftは案内しています。ただし、具体的なアルゴリズム名は公式には明記されていません。パスワード自体が短すぎたり推測されやすい場合は、暗号化の強度にかかわらず破られるリスクがあります。Microsoftは8文字以上、できれば14文字以上のパスワードを推奨しています。
Q. mdbとaccdbで、パスワード保護の仕組みはどう違いますか。
Access 95〜2003で使われた.mdb形式の保護方式は、現在ではセキュリティ境界として推奨されません。Microsoftも.accdbについて「以前より強力な暗号化アルゴリズムを使用する」と説明しており、.mdbの保護方式が弱かったことを間接的に認めています。具体的なアルゴリズムの仕様は公式には明記されていませんが、作成したAccessのバージョンや設定によって暗号化の強度が変わりえます。ファイル形式の詳細な違いについては.accdbと.mdbの違いも参照してください。
触れないAccessが「診断できるか」だけ、確かめませんか。
顧客データは送信不要。発注の義務もありません。
約2分・ファイル送信不要・発注義務なし/説明はオンライン・売り込みはしません