アクセス制御

このページでは、Filestore インスタンスへのアクセスを制御する方法について説明します。

Filestore では、Filestore インスタンスへのアクセス保護に Kerberos がサポートされません。代わりに、このページで説明されている Linux および Identity and Access Management(IAM)オプションを使用します。

ファイル共有のエクスポート設定

Filestore のファイル共有には、次のデフォルトの /etc/exports 設定が割り当てられます。

  • クライアント リストは、Filestore インスタンスに選択した VPC ネットワーク内のすべての内部 IP アドレスで構成され、ファイル共有への接続が許可されるクライアントを識別します。内部 IP アドレスは、サブネット範囲に含まれる任意の範囲を指定できます。ただし、クライアントがRFC 1918サブネット範囲を使用する場合は、IP ベースのアクセス制御を使用して Filestore インスタンスへのアクセス権を明示的に付与する必要があります。
  • rw オプションが使用されるため、ファイル共有は読み書き可能です。
  • ユーザー ID マッピング オプション no_root_squash が使用されるため、Filestore インスタンスとクライアントの双方で、root ユーザーを含むすべてのユーザーとグループが同じであると想定されます。
  • 他のすべてのオプションでは、/etc/exports のデフォルトが使用されます。

IP ベースのアクセス制御

これらのエクスポート設定を変更するには、Cloud Console を使用してアクセス制御ルールを作成するか、インスタンスの作成時に gcloud ツールを使用して JSON 構成ファイルを指定します。詳細については、IP ベースのアクセス制御を構成するをご覧ください。

また、インスタンスを作成した後に、新しいアクセス制御ルールの追加や、既存のアクセス制御ルールの変更を行えます。詳細については、インスタンスの編集をご覧ください。

ファイル共有の権限

Filestore インスタンスを作成する場合、そのインスタンスのファイル共有には rwxr-xr-x のデフォルトの POSIX ファイル権限が設定されます。これらの権限は、Filestore インスタンス上で、接続クライアントの root ユーザーのみにファイル共有への読み取り / 書き込みアクセス権が付与されることを意味します。その他のユーザーにはデフォルトで読み取りアクセスのみが付与されます。クライアントの root ユーザーは権限やオーナーを変更できます。

ファイル共有のアクセス権限を構成する

ファイル共有をマウントする際は、マウント オプション/etc/fstab 設定を使用して、ファイル共有が書き込み可能であるかどうか、また、ファイルに対して実行可能かどうか確認できます。ファイル共有のマウント後に、chmodsetfacl などの標準の Linux コマンドを使用して、ファイルおよびファイル共有のアクセス権限を設定できます。

一貫性のあるアクセス権限を設定する

権限昇格を防ぐため、同じ Filestore インスタンスに接続するすべてのクライアントの各ユーザーには、一貫性のあるアクセス権限を設定することを強くおすすめします。ファイル共有が複数のクライアントにマウントされ、ユーザーが 1 つのクライアントに複数のルート権限を持ち、他にない場合、次の権限昇格のシナリオが考えられます。

  • ユーザーは、ルートアクセス権を持つクライアントから実行可能ファイルに setuid 属性を設定します。
  • ユーザーは実行可能ファイルをファイル共有にアップロードします。
  • ユーザーは、少なくとも読み取り権限を持っている任意のクライアントで、アップロードされたファイルを root として実行します。

setuid ビットを使用すると、ファイル オーナーの権限(この場合は root)を使用してファイルを実行できるため、このシナリオが可能です。

IAM のロールと権限

ユーザーに Identity and Access Management(IAM)のロールを付与することで、Filestore オペレーションへのアクセス権を付与します。

IAM の権限は、Filestore インスタンスの作成など、Filestore オペレーションへのアクセス権のみを制御します。読み取りや実行など、ファイル共有の操作へのアクセスを制御するには、POSIX ファイル権限を使用します。

Filestore の役割を使用する

Filestore の権限をユーザーに付与するには、Filestore 編集者(roles/file.editor)と Filestore 閲覧者(roles/file.viewer)のロールを使用します。これには、必要に応じて基本の役割を使用することもできます。

次の表を参照して、基本のロールに関連付けられる Filestore のアクセス権限を確認してください。

権限 操作 Filestore 編集者 Filestore 閲覧者
file.locations.get このサービスでサポートされる場所に関する情報を取得します。
file.locations.list このサービスでサポートされる場所に関する情報をリストします。
file.instances.create Filestore インスタンスを作成します。
file.instances.update Filestore インスタンスを更新します。
file.instances.delete Filestore インスタンスを削除します。
file.instances.get 特定の Filestore インスタンスの詳細を取得します。
file.instances.list プロジェクト内の Filestore インスタンスをリストします。
file.operations.get Filestore インスタンスのオペレーションのステータスを取得します。
file.operations.list Filestore インスタンスのオペレーションをリストします。
file.operations.cancel Filestore インスタンスのオペレーションをキャンセルします。
file.operations.delete Filestore インスタンスのオペレーションを削除します。
file.backups.create Filestore のバックアップを作成する。
file.backups.update Filestore のバックアップを更新します。
file.backups.delete Filestore のバックアップを削除します。
file.backups.get 特定の Filestore バックアップの詳細を取得します。
file.backups.list プロジェクト内の Filestore インスタンスを一覧表示します。

基本のロールの使用

Filestore の権限は、オーナー、編集者、閲覧者という IAM の基本のロールにも関連付けられます。Filestore のロールをユーザーに付与するには、これらのロールを Filestore のロールに加えて使用できます。

次の表を参照して、基本のロールに関連付けられる Filestore の権限を確認してください。

権限 操作 プロジェクト オーナー プロジェクト編集者 プロジェクト閲覧者
file.locations.get このサービスでサポートされる場所に関する情報を取得します。
file.locations.list このサービスでサポートされる場所に関する情報をリストします。
file.instances.create Filestore インスタンスを作成します。
file.instances.update Filestore インスタンスを更新します。
file.instances.delete Filestore インスタンスを削除します。
file.instances.get 特定の Filestore インスタンスの詳細を取得します。
file.instances.list プロジェクト内の Filestore インスタンスをリストします。
file.operations.get Filestore インスタンスのオペレーションのステータスを取得します。
file.operations.list Filestore インスタンスのオペレーションをリストします。
file.operations.cancel Filestore インスタンスのオペレーションをキャンセルします。
file.operations.delete Filestore インスタンスのオペレーションを削除します。
file.backups.create Filestore のバックアップを作成する。
file.backups.update Filestore のバックアップを更新します。
file.backups.delete Filestore のバックアップを削除します。
file.backups.get 特定の Filestore バックアップの詳細を取得します。
file.backups.list プロジェクト内の Filestore インスタンスを一覧表示します。

カスタムの役割

事前定義された IAM ロールがニーズに合わない場合は、IAM のカスタムロールを使用して、指定した権限を含むカスタムロールを定義できます。Filestore のカスタムのロールを作成する際は、ロールにプロジェクトのリソースをクエリする権限を含めるため、必ず resourcemanager.projects.getresourcemanager.projects.list の両方を含めてください。