Access 2007 より前のバージョンの Access でデータベースを作成し、そのデータベースにユーザー レベルのセキュリティを適用した場合、そのファイルを Access 2007 以降で開いたときに、それらのセキュリティ設定は維持されます。 さらに、新しいバージョンの Access から、Microsoft Office Access 2003 (User-Level セキュリティ ウィザード)、およびさまざまなユーザーとグループのアクセス許可ダイアログ ボックスによって提供されるセキュリティ ツールを開始できます。 この記事では、Access 2003 のセキュリティ機能のしくみについて説明し、Access 2007 以降でそれらを開始して使用する方法について説明します。
注: この記事の情報は、Access 2003 以前のバージョン (.mdb ファイル) で作成されたデータベースにのみ適用されます。 ユーザー レベルのセキュリティは、Access 2007 以降 (.accdb ファイル) で作成されたデータベースでは使用できません。 また、.mdb ファイルを新しい形式 (.accdb ファイル) に変換すると、ユーザー レベルのセキュリティ設定が破棄されます。
この記事の内容
Access 2007 以降でのユーザー レベルのセキュリティの動作
Access 2007 以降のバージョンでは、Access 2003 以前のファイル形式 (.mdb ファイルと .mde ファイル) を使用するデータベースに対してのみ、ユーザー レベルのセキュリティが提供されます。 以降のバージョンでは、以前のバージョンの Access で作成されたデータベースを開き、そのデータベースにユーザー レベルのセキュリティが適用されている場合、そのセキュリティ機能はそのデータベースの設計どおりに機能します。 たとえば、ユーザーはデータベースを使用するためにパスワードを入力する必要があります。
さらに、access 2003 以前のバージョンで提供されているさまざまなセキュリティ ツール (User-Level セキュリティ ウィザード、さまざまなユーザーとグループのアクセス許可ダイアログ ボックスなど) を起動して実行できます。 作業を進めると、これらのツールは、.mdb または .mde ファイルを開くときにのみ使用できるようになります。 ファイルを .accdb ファイル形式に変換すると、既存のすべてのユーザー レベルのセキュリティ機能が削除されます。
Access 2003 ユーザー レベルのセキュリティの概要
以降のセクションでは、Access 2003 以前のバージョンのユーザー レベルのセキュリティに関する背景情報を提供します。 以前のセキュリティ モデルとユーザー レベルのセキュリティに既に精通している場合は、これらのセクションをスキップし、この記事の後半の「 ユーザー レベルのセキュリティを設定 する」または「 ユーザー レベルのセキュリティを削除する」に直接進むことができます。
ユーザー レベルのセキュリティの基本
Access のユーザー レベルのセキュリティは、サーバー ベースのシステム上のセキュリティ メカニズムに似ています。パスワードとアクセス許可を使用して、データベース内のオブジェクトに対する個人または個人のグループのアクセスを許可または制限します。 Access 2003 以前のバージョンでは、Access データベースにユーザー レベルのセキュリティを実装する場合、データベース管理者またはオブジェクトの所有者は、データベース内のテーブル、クエリ、フォーム、レポート、マクロに対して個々のユーザーまたはユーザーのグループが実行できるアクションを制御できます。 たとえば、ユーザーの 1 つのグループがデータベース内のオブジェクトを変更でき、別のグループは特定のテーブルにのみデータを入力でき、3 番目のグループはレポートのセット内のデータのみを表示できます。
Access 2003 以前のバージョンのユーザー レベルのセキュリティでは、パスワードとアクセス許可の組み合わせが使用されます。これは、ユーザーがデータベース内のデータまたはオブジェクトに対して持つアクセスの種類を指定する属性のセットです。 個人または個人のグループに対してパスワードとアクセス許可を設定できます。パスワードとアクセス許可の組み合わせは、データベース内のオブジェクトへのアクセスを許可されているユーザーとユーザーのグループを定義するセキュリティ アカウントになります。 さらに、ユーザーとグループの組み合わせはワークグループと呼ばれ、Access はその情報をワークグループ情報ファイルに格納します。 起動時に、Access はワークグループ情報ファイルを読み取り、ファイル内のデータに基づいてアクセス許可を適用します。
既定では、Access は組み込みのユーザー ID と 2 つの組み込みグループを提供します。 既定のユーザー ID は管理、既定のグループは Users と Admins です。 既定では、すべての ID が少なくとも 1 つのグループに属している必要があるため、Access によって組み込みのユーザー ID が Users グループに追加されます。 さらに、Users グループには、データベース内のすべてのオブジェクトに対する完全なアクセス許可があります。 さらに、管理 ID は Admins グループのメンバーでもあります。 Admins グループには、少なくとも 1 つのユーザー ID (データベース管理者が存在する必要があります) が含まれている必要があり、管理 ID は、変更するまでの既定のデータベース管理者です。
Access 2003 以前のバージョンを起動すると、Access によって 管理 ユーザー ID が割り当てられるため、各既定のグループのメンバーになります。 その ID とそれらのグループ (管理とユーザー) は、データベース内のすべてのオブジェクトに対するすべてのユーザーに完全なアクセス許可を付与します。つまり、ユーザー レベルのセキュリティを実装しない限り、すべてのユーザーがすべての.mdb ファイル内のすべてのオブジェクトを開き、表示、変更できます。
Access 2003 以前のバージョンでユーザー レベルのセキュリティを実装する方法の 1 つは、Users グループのアクセス許可を変更し、管理者グループに新しい管理者を追加することです。 これを行うと、Access によって新しいユーザーが [ユーザー] グループに自動的に割り当てられます。 これらの手順を実行する場合、ユーザーは保護されたデータベースを開くたびにパスワードでログインする必要があります。 ただし、より具体的なセキュリティを実装する必要がある場合 (たとえば、1 つのユーザー グループがデータを入力し、別のグループがそのデータのみを読み取ることができるようにする) 場合は、追加のユーザーとグループを作成し、データベース内のオブジェクトの一部またはすべてに特定のアクセス許可を付与する必要があります。 その種類のユーザー レベルのセキュリティを実装すると、複雑なタスクになる可能性があります。 プロセスを簡略化するために、Access には User-Level セキュリティ ウィザードが用意されており、1 つの手順でユーザーとグループを簡単に作成できます。
User-Level セキュリティ ウィザードを使用すると、アクセス許可を割り当て、ユーザー アカウントとグループ アカウントを作成できます。 ユーザー アカウントには、Access ワークグループ内のデータベース オブジェクトを表示、使用、または変更するためのユーザーのアクセス許可を管理するために必要なユーザー名と一意の個人 ID 番号 (PID) が含まれています。 グループ アカウントは、ワークグループ内に存在するユーザー アカウントのコレクションです。 Access では、グループ名と PID を使用して各作業グループを識別し、グループに割り当てられたアクセス許可はグループ内のすべてのユーザーに適用されます。 ウィザードの使用方法の詳細については、この記事の後半 の「ユーザー レベルのセキュリティを設定する」を参照してください。
ウィザードが完了したら、ワークグループ内のユーザーアカウントとグループアカウントとその既存のテーブル、クエリ、フォーム、レポート、マクロのアクセス許可を手動で割り当て、変更、または削除できます。 また、自分または他のユーザーがデータベースに追加する新しいテーブル、クエリ、フォーム、レポート、マクロに対して Access によって割り当てられる既定のアクセス許可を設定することもできます。
ワークグループとワークグループ情報ファイル
Access 2003 以前のバージョンでは、ワークグループはデータを共有するマルチユーザー環境のユーザーのグループです。 ワークグループ情報ファイルには、個々のユーザーまたはユーザーグループごとに設定されたユーザーアカウントとグループアカウント、パスワード、アクセス許可が含まれています。 データベースを開くと、Access はワークグループ情報ファイル内のデータを読み取り、ファイルに含まれるセキュリティ設定を適用します。 さらに、ユーザー アカウントは、ユーザーのアクセス許可を管理するために Access によって作成されるユーザー名と個人 ID (PID) の組み合わせです。 グループ アカウントはユーザー アカウントのコレクションであり、グループ名と個人 ID (PID) によって識別されます。 グループに割り当てられたアクセス許可は、グループ内のすべてのユーザーに適用されます。 これらのセキュリティ アカウントには、データベースとそのテーブル、クエリ、フォーム、レポート、マクロのアクセス許可を割り当てることができます。 アクセス許可自体は、セキュリティが有効なデータベースに格納されます。
ユーザーが Access 2003 以前のバージョンを初めて実行すると、Access は名前で識別される Access ワークグループ情報ファイルを自動的に作成し、ユーザーが Access をインストールするときに指定する情報をorganizationします。 Access 2003 の場合、セットアップ プログラムは、このワークグループ情報ファイルの相対場所を次のレジストリ キーに追加します。
HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\Jet\4.0\Engines\SystemDB
および
HKEY_USERS\.DEFAULT\Software\Microsoft\Office\11.0\Access\Jet\4.0\Engines\SystemDB
後続のユーザーは、HKEY_USERS レジストリ キーの値から既定のワークグループ ファイル パスを継承します。 多くの場合、この情報は簡単に判断できるため、承認されていないユーザーがこのワークグループ情報ファイルの別のバージョンを作成できます。 そのため、承認されていないユーザーは、そのワークグループ情報ファイルによって定義されたワークグループ内の管理者アカウント (Admins グループのメンバー) の取り消し不可能なアクセス許可を想定できます。 承認されていないユーザーがこれらのアクセス許可を前提としないようにするには、新しいワークグループ情報ファイルを作成し、ワークグループ情報ファイルを作成するときに入力する 4 から 20 文字の英数字文字列であるワークグループ ID (WID) を指定します。 新しいワークグループを作成すると、このワークグループ ファイルの管理 グループが一意に識別されます。 WID を知っているユーザーのみがワークグループ情報ファイルのコピーを作成できます。 新しいファイルを作成するには、User-Level セキュリティ ウィザードを使用します。
重要: 正確な名前、organization、ワークグループ ID (文字が大文字か小文字かを含む) を必ず書き留め、安全な場所に保管してください。 ワークグループ情報ファイルを再作成する必要がある場合は、まったく同じ名前、organization、ワークグループ ID を指定する必要があります。 これらのエントリを忘れたり失ったりすると、データベースへのアクセスが失われる可能性があります。
アクセス許可のしくみと割り当て可能なユーザー
ユーザー レベルのセキュリティでは、明示的と暗黙的の 2 種類のアクセス許可が認識されます。 明示的なアクセス許可は、ユーザー アカウントに直接付与されるアクセス許可です。他のユーザーは影響を受けなくなります。 暗黙的なアクセス許可は、グループ アカウントに付与されるアクセス許可です。 そのグループにユーザーを追加すると、そのユーザーに対するグループのアクセス許可が付与されます。グループからユーザーを削除すると、そのユーザーからグループのアクセス許可が削除されます。
ユーザーがセキュリティ機能を使用するデータベース オブジェクトに対して操作を実行しようとすると、そのユーザーの一連のアクセス許可は、そのユーザーの明示的なアクセス許可と暗黙的なアクセス許可の積集合に基づいて行われます。 ユーザーのセキュリティ レベルは、そのユーザーの明示的なアクセス許可と、そのユーザーが属するすべてのグループのアクセス許可の制限が常に最も制限が少ないレベルです。 このため、ワークグループを管理する最も複雑な方法は、個々のユーザーではなく、新しいグループを作成し、グループにアクセス許可を割り当てることです。 その後、それらのユーザーをグループに追加または削除することで、個々のユーザーのアクセス許可を変更できます。 また、新しいアクセス許可を付与する必要がある場合は、1 回の操作でグループのすべてのメンバーに付与できます。
データベース オブジェクトのアクセス許可は、次の方法で変更できます。
-
データベースの作成時に使用されているワークグループ情報ファイルの Admins グループのメンバー。
-
オブジェクトの所有者。
-
オブジェクトの管理アクセス許可を持つすべてのユーザー。
ユーザーは現在アクションを実行できない場合でも、アクションを実行するためのアクセス許可を自分自身に付与できる場合があります。 これは、ユーザーが Admins グループのメンバーである場合、またはユーザーがオブジェクトの所有者である場合に当てはまります。
テーブル、クエリ、フォーム、レポート、またはマクロを作成するユーザーは、そのオブジェクトの所有者です。 さらに、データベース内のアクセス許可を変更できるユーザーのグループは、これらのオブジェクトの所有権を変更することも、これらのオブジェクトを再作成することもできます。どちらも、オブジェクトの所有権を変更する方法です。 オブジェクトを再作成するには、オブジェクトのコピーを作成するか、別のデータベースからインポートしたり、別のデータベースにエクスポートしたりできます。 これは、データベース自体を含むオブジェクトの所有権を転送する最も簡単な方法です。
注: コピー、インポート、またはエクスポートでは、 RunPermissions プロパティが所有者に設定されているクエリ の所有権は変更されません。 クエリの所有権を変更できるのは、その RunPermissions プロパティが User に設定されている場合のみです。
セキュリティ アカウント
Access 2003 ワークグループ情報ファイルには、次の定義済みのアカウントが含まれています。
アカウント |
関数 |
管理 |
既定のユーザー アカウント。 このアカウントは、Access のすべてのコピーと、Visual Basic for Applications (VBA) や Microsoft Office Excel 2003 など、Microsoft Jet データベース エンジンを使用できるその他のプログラムとまったく同じです。 |
管理者 |
管理者のグループ アカウント。 このアカウントは、各ワークグループ情報ファイルに固有です。 既定では、管理 ユーザーは Admins グループのメンバーです。 Admins グループには、常に少なくとも 1 人のユーザーが存在する必要があります。 |
ユーザー |
すべてのユーザー アカウントを構成するグループ アカウント。 管理者グループのメンバーがユーザー アカウントを作成すると、ユーザー アカウントがユーザー グループに自動的に追加されます。 このアカウントはどのワークグループ情報ファイルでも同じですが、そのワークグループの Admins グループのメンバーによって作成されたユーザー アカウントのみが含まれています。 既定では、このアカウントには、新しく作成されたすべてのオブジェクトに対する完全なアクセス許可があります。 ユーザー アカウントを Users グループから削除する唯一の方法は、Admins グループのメンバーがそのユーザーを削除することです。 |
実際には、Access 2003 以前のバージョンのセキュリティは常にアクティブです。 ワークグループのログオン 手順をアクティブ化するまで、Access では、既定の 管理 ユーザー アカウントと空のパスワードを使用して、起動時にすべてのユーザーを表示不可にログに記録します。 バックグラウンドでは、Access はワークグループの管理者アカウントとして管理 アカウントを使用します。 Access では、作成されたすべてのデータベース、テーブル、クエリ、フォーム、レポート、マクロの所有者 (グループまたはユーザー) に加えて、管理 アカウントが使用されます。
管理者と所有者は、取り除くことができないアクセス許可を持っているため、重要です。
-
管理者 (Admins グループのメンバー) は、ワークグループで作成されたオブジェクトに対する完全なアクセス許可を常に取得できます。
-
テーブル、クエリ、フォーム、レポート、またはマクロを所有するアカウントは、常にそのオブジェクトの完全なアクセス許可を取得できます。
-
データベースを所有するアカウントは、いつでもそのデータベースを開くことができます。
管理ユーザー アカウントは Access のすべてのコピーでまったく同じであるため、データベースのセキュリティ保護を支援する最初の手順は、管理者と所有者のユーザー アカウントを定義する (または、管理者アカウントと所有者アカウントの両方として 1 つのユーザー アカウントを使用する) してから、管理 ユーザー アカウントを Admins グループから削除することです。 それ以外の場合、Access のコピーを持つすべてのユーザーは、管理 アカウントを使用してワークグループにログオンでき、ワークグループのテーブル、クエリ、フォーム、レポート、マクロに対する完全なアクセス許可を持つことができます。
Admins グループには必要な数のユーザー アカウントを割り当てることができますが、データベースを所有できるユーザー アカウントは 1 つだけです。所有アカウントは、データベースが作成されたとき、または新しいデータベースを作成してデータベースのすべてのオブジェクトをインポートすることによって所有権が転送されるときにアクティブなユーザー アカウントです。 ただし、グループ アカウントは、データベース内のテーブル、クエリ、フォーム、レポート、マクロを所有できます。
セキュリティ アカウントを整理するときの考慮事項
-
Access にログオンできるのはユーザー アカウントのみです。グループ アカウントを使用してログオンすることはできません。
-
データベースのユーザー用に作成するアカウントは、ユーザーがデータベースを使用するときに参加するワークグループ情報ファイルに格納する必要があります。 別のファイルを使用してデータベースを作成する場合は、アカウントを作成する前にファイルを変更します。
-
管理者アカウントとユーザー アカウントの一意のパスワードを必ず作成してください。 管理者アカウントを使用してログオンできるユーザーは、ワークグループで作成されたすべてのテーブル、クエリ、フォーム、レポート、マクロに対する完全なアクセス許可を常に取得できます。 所有者アカウントを使用してログオンできるユーザーは、そのユーザーが所有するオブジェクトの完全なアクセス許可を常に取得できます。
ユーザー アカウントとグループ アカウントを作成した後、それらの間のリレーションシップを表示および印刷できます。 Access は、各ユーザーが属するグループと各グループに属するユーザーを示すワークグループ内のアカウントのレポートを出力します。
注: Microsoft Access 2.0 で作成されたワークグループ情報ファイルを使用している場合、ユーザーとグループの情報を印刷するには、Admins グループのメンバーとしてログオンする必要があります。 ワークグループ情報ファイルが Microsoft Access 97 以降で作成された場合、ワークグループ内のすべてのユーザーがユーザー情報とグループ情報を印刷できます。
ユーザー レベルのセキュリティを設定する
このセクションの手順では、User-Level セキュリティ ウィザードを開始して実行する方法について説明します。 これらの手順は、Access 2003 以前のファイル形式が Access 2007 以降のバージョンで開かれているデータベースにのみ適用されることに注意してください。
重要: Access 2007 以降のバージョンでは、User-Level セキュリティ ウィザードを使用して既定のワークグループ情報ファイルを指定する場合は、/WRKGP コマンド ライン スイッチを使用して、Access を起動するときにワークグループ情報ファイルをポイントする必要もあります。 Access でコマンド ライン スイッチを使用する方法の詳細については、 Microsoft Office 製品のコマンド ライン スイッチに関する記事を参照してください。
User-Level セキュリティ ウィザードを起動する
-
管理する.mdbまたは .mde ファイルを開きます。
-
[ データベース ツール ] タブの [ 管理 ] グループで、[ ユーザーとアクセス許可] の下の矢印をクリックし、[ ユーザー レベルのセキュリティ ウィザード] をクリックします。
-
ウィザードを完了するには、各ページの手順に従います。
注:
-
User-Level セキュリティ ウィザードは、同じ名前と .bakファイル名拡張子を持つ現在の Access データベースのバックアップ コピーを作成し、現在のデータベース内の選択したオブジェクトに対してセキュリティ対策を採用します。
-
現在の Access データベースがパスワードを使用して VBA コードを保護するのに役立つ場合は、ウィザードでパスワードの入力を求められます。ウィザードで操作を正常に完了するには、「」と入力する必要があります。
-
ウィザードを使用して作成したパスワードはすべて、User-Level セキュリティ ウィザード レポートに出力されます。このレポートは、ウィザードの使用が完了したときに印刷されます。 このレポートは安全な場所に保持する必要があります。 このレポートを使用して、ワークグループ ファイルが紛失または破損した場合に、ワークグループ ファイルを再作成できます。
-
ユーザー レベルのセキュリティを削除する
Access 2007 以降での作業中にユーザー レベルのセキュリティを削除するには、.mdb ファイルを .accdb ファイルとして保存します。
ファイルのコピーを に保存します。ACCDB 形式
-
[ファイル] タブをクリックします。 Backstage ビューが開きます。
-
左側の [ 共有] をクリックします。
-
右側の [名前を 付けてデータベースを保存] をクリックし、[ Access Database (*.accdb)] をクリックします。
[名前を付けて保存] ダイアログ ボックスが表示されます。
-
[保存場所] リストを使用して、変換されたデータベースを保存する場所を見つけます。
-
[ 名前を付けて保存] の種類 の一覧で、 Access 2007-2016 Database (*.accdb) を選択します。
-
[保存] をクリックします。
注: Access 2007 を使用している場合は、[ Microsoft Office] ボタン をクリックし、[ 変換 ] をクリックして [ 保存 ] ダイアログ ボックスを開き、データベースを に保存します。ACCDB ファイル形式。
オブジェクトのアクセス許可リファレンス
次の表に、データベースとデータベース内のオブジェクトに対して設定できるアクセス許可の一覧を示し、各アクセス許可設定を使用した効果または結果について説明します。
アクセス許可 |
これらのオブジェクトに適用されます |
結果 |
Open/Run |
データベース全体、フォーム、レポート、マクロ |
ユーザーは、コード モジュール内のプロシージャを含め、オブジェクトを開いたり実行したりできます。 |
排他で開く |
データベース全体 |
ユーザーはデータベースを開き、他のユーザーをロックアウトできます。 |
デザインの読み取り |
テーブル、クエリ、フォーム、マクロ、コード モジュール |
ユーザーは、表示されているオブジェクトをデザイン ビューで開くことができます。 注: データの読み取りやデータの更新などの別のアクセス許可を割り当てることで、テーブルまたはクエリ内のデータへのアクセス権を付与するたびに、デザインを正しく表示してデータを表示する必要があるため、デザインの読み取りアクセス許可も付与します。 |
デザインの変更 |
テーブル、クエリ、フォーム、マクロ、コード モジュール |
ユーザーは、一覧表示されたオブジェクトのデザインを変更できます。 |
管理 |
データベース全体、テーブル、クエリ、フォーム、マクロ、コード モジュール |
ユーザーまたはグループがオブジェクトを所有していない場合でも、ユーザーは一覧表示されたオブジェクトにアクセス許可を割り当てることができます。 |
データの読み取り |
テーブル、クエリ |
ユーザーは、テーブルまたはクエリ内のデータを読み取ることができます。 ユーザーにクエリの読み取りアクセス許可を付与するには、それらのユーザーに親テーブルまたはクエリの読み取りアクセス許可も付与する必要があります。 この設定は、[デザインの読み取り] アクセス許可を意味します。つまり、ユーザーはデータに加えてテーブルまたはクエリデザインを読み取ることができます。 |
データの更新 |
テーブル、クエリ |
ユーザーは、テーブルまたはクエリ内のデータを更新できます。 ユーザーには、親テーブルまたはクエリを更新するためのアクセス許可が必要です。 この設定は、読み取りデザインと読み取りデータの両方のアクセス許可を意味します。 |
データの挿入 |
テーブル、クエリ |
ユーザーはテーブルまたはクエリにデータを挿入できます。 クエリの場合、ユーザーは親テーブルまたはクエリにデータを挿入するアクセス許可を持っている必要があります。 この設定は、データの読み取りとデザインの読み取りの両方のアクセス許可を意味します。 |
データの削除 |
テーブル、クエリ |
ユーザーは、テーブルまたはクエリからデータを削除できます。 クエリの場合、ユーザーは親テーブルまたはクエリからデータを削除するアクセス許可を持っている必要があります。 この設定は、データの読み取りとデザインの読み取りの両方のアクセス許可を意味します。 |