アクセス制御

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

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

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

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

  • クライアント リストは、Filestore インスタンスに選択した VPC ネットワーク内のすべての内部 IP アドレスで構成され、ファイル共有への接続が許可されるクライアントを識別します。内部 IP アドレスは、RFC 1918 に準拠した 10.0.0.0/8172.16.0.0/12192.168.0.0/16 の範囲内のアドレスです。
  • rw オプションが使用されるため、ファイル共有は読み書き可能です。
  • ユーザー ID マッピング オプション no_root_squash が使用されるため、Filestore インスタンスとクライアントの双方で、root ユーザーを含むすべてのユーザーとグループが同じであると想定されます。
  • 他のすべてのオプションでは、/etc/exports のデフォルトが使用されます。

IP ベースのアクセス制御

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

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

ファイル共有の権限

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

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

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

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

以下に該当する場合に問題が発生するため、同じ Filestore インスタンスに接続するすべてのクライアントの各ユーザーには、一貫性のあるアクセス権限を設定することを強くおすすめします。

  • 特定のファイル共有が複数のクライアントにマウントされている場合
  • 特定のユーザーがあるクライアントで root 権限を保持し、他のクライアントでは保持していない場合

ユーザーは root アクセス権限を持つクライアントから setuid ビットを設定してファイルをアップロードできるため、他のクライアントでも読み取り許可以上の権限を保持していれば、そのファイルを root として実行できてしまいます。これは、setuid ビットを使用すると、ファイル オーナーの権限(この場合は root)を使用してファイルを実行できるためです。

IAM のロールと権限

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

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

Filestore のロールを使用する

Filestore 編集者および Filestore 閲覧者のロールを使用して、Filestore の権限をユーザーに付与できます。これには、必要に応じて基本のロールを使用することもできます。

次の表を参照して、基本のロールに関連付けられる 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 インスタンスのオペレーションを削除します。

基本のロールの使用

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 インスタンスのオペレーションを削除します。

カスタムロール

事前定義された IAM のロールがニーズに合わない場合は、権限を指定してカスタムのロールを定義できます。これをサポートするため、IAM にはカスタムのロールが用意されています。 Filestore のカスタムのロールを作成する際は、ロールにプロジェクトのリソースをクエリする権限を含めるため、必ず resourcemanager.projects.getresourcemanager.projects.list の両方を含めてください。このようにしないと、Filestore に対して Google Cloud Console が正しく機能しません。