このページでは、Filestore インスタンスへのアクセスを制御する方法について説明します。
Filestore では、Filestore インスタンスへのアクセス保護に Kerberos がサポートされません。代わりに、下記の説明のように Linux および Identity and Access Management(IAM)オプションを使用します。
ファイル共有のエクスポート設定
Filestore のファイル共有には、次のデフォルトの /etc/exports
設定が割り当てられます。
- クライアント リストは、Filestore インスタンスに選択した VPC ネットワーク内のすべての内部 IP アドレスで構成され、ファイル共有への接続が許可されるクライアントを識別します。内部 IP アドレスは、サブネット範囲に含まれる任意の範囲を指定できます。
rw
オプションが使用されるため、ファイル共有は読み書き可能です。- ユーザー ID マッピング オプション
no_root_squash
が使用されるため、Filestore インスタンスとクライアントの双方で、root ユーザーを含むすべてのユーザーとグループが同じであると想定されます。 - 他のすべてのオプションでは、
/etc/exports
のデフォルトが使用されます。
IP ベースのアクセス制御
これらのエクスポート設定を変更するには、Cloud Console を使用してアクセス制御ルールを作成するか、インスタンスの作成時に gcloud
ツールを使用して JSON 構成ファイルを指定します。詳細については、IP ベースのアクセス制御を構成するをご覧ください。
また、インスタンスを作成した後に、新しいアクセス制御ルールの追加や、既存のアクセス制御ルールの変更を行えます。詳細については、インスタンスの編集をご覧ください。
ファイル共有の権限
Filestore インスタンスを作成する際、そのインスタンスのファイル共有には rwxr-xr-x
、8 進法表記 755
のデフォルトの Unix 権限が設定されます。これらの権限は、Filestore インスタンス上で、接続クライアントの root ユーザーのみにファイル共有への読み取り / 書き込みアクセス権が付与されることを意味します。その他のユーザーにはデフォルトで読み取りアクセスのみが付与されますが、クライアントの root ユーザーは権限やオーナーを変更できます。
ファイル共有のアクセス権限を構成する
クライアントに Filestore ファイル共有をマウントする際は、mount
コマンドのオプションと /etc/fstab
ファイル内の設定を使用して、マウントされるファイル共有が書き込み可能であるかどうか、また、そこでファイルの実行が可能であるかどうかを決定できます。ファイル共有のマウント後に、chmod
や setfacl
などの標準の Linux コマンドを使用して、ファイルおよびファイル共有のアクセス権限を設定できます。
一貫性のあるアクセス権限を設定する
以下に該当する場合に問題が発生するため、同じ Filestore インスタンスに接続するすべてのクライアントの各ユーザーには、一貫性のあるアクセス権限を設定することを強くおすすめします。
- 特定のファイル共有が複数のクライアントにマウントされている場合
- 特定のユーザーがあるクライアントで root 権限を保持し、他のクライアントでは保持していない場合
ユーザーは root アクセス権限を持つクライアントから setuid
ビットを設定してファイルをアップロードできるため、他のクライアントでも読み取り許可以上の権限を保持していれば、そのファイルを root として実行できてしまいます。これは、setuid
ビットを使用すると、ファイル オーナーの権限(この場合は root)を使用してファイルを実行できるためです。
IAM のロールと権限
ユーザーに Identity and Access Management(IAM)のロールを付与することで、Filestore オペレーションへのアクセス権を付与します。
IAM の権限は、Filestore インスタンスの作成など、Filestore オペレーションへのアクセス権のみを制御します。読み取り、実行などの Filestore のファイル共有に対するオペレーションへのアクセス権は、Linux の権限によって決まります。
Filestore の役割を使用する
Filestore 編集者(roles/file.editor)と Filestore 閲覧者(roles/file.viewer)のロールを使用して、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 インスタンスのオペレーションを削除します。 | ✓ | |
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.get
と resourcemanager.projects.list
の両方を含めてください。このようにしないと、Filestore に対して Google Cloud Console が正しく機能しません。