このページでは、Google Distributed Cloud(GDC)エアギャップでカスタムロールを作成および管理する方法について説明します。カスタムロールを使用すると、事前定義ロールで使用可能な標準の権限セット以外のアクセスを管理できるため、特定の条件を満たすように権限を構成できます。
カスタムロールは最小権限の原則に従い、機密性の高いタスクに必要な最小限のアクセス権を付与するのに役立ちます。これにより、セキュリティ リスクを軽減し、利益相反を防ぐことができます。
カスタムロールを作成すると、次のことが可能になります。
- アクセスのスコープを定義する: 組織全体、すべてのプロジェクト、または特定のプロジェクトに権限を適用します。
- きめ細かいアクセスをカスタマイズする: 事前定義ロールですでに使用可能な権限を 1 つ以上選択して、特定のタスクまたは責任へのアクセスをカスタマイズします。
カスタムロールは、作成されたスコープにバインドされます。カスタムロールへのアクセス権は、カスタムロールが作成された同じ組織またはプロジェクト内でのみ付与できます。
このページは、組織リソースへのアクセスを安全に管理する IT 管理者やセキュリティ エンジニアなど、プラットフォーム管理者グループのユーザーを対象としています。詳細については、GDC エアギャップ ドキュメントの対象読者をご覧ください。
ロールの詳細については、事前定義ロールの説明とロールの定義をご覧ください。
始める前に
カスタムロールを作成または管理する前に、必要な権限をリクエストして環境を準備する必要があります。
IAM 組織ロールをリクエストする
組織全体またはプロジェクト内でカスタムロールを作成、更新、削除するには、IAM 組織管理者に連絡して、カスタムロール組織管理者(custom-role-org-admin)ロールをリクエストします。
組織のロール権限の割り当ての詳細を確認する。
IAM プロジェクト ロールをリクエストする
特定のプロジェクト内でカスタムロールを作成、更新、削除するには、IAM プロジェクト管理者に連絡して、カスタムロール プロジェクト管理者(custom-role-project-admin)ロールをリクエストしてください。
プロジェクトのロール権限の割り当ての詳細を確認する。
環境を準備する
コマンドライン ツールを使用してカスタムロールを作成または管理するには、次の設定を行います。
kubectlで API を使用するには、追加の設定が必要です。- kubectl CLI をインストールします。
kubectlアクセスを構成するために、グローバル API サーバーの kubeconfig ファイルを生成します。
ロールと権限を表示する
カスタムロールは、ユーザーに割り当てることができる権限のグループで構成されます。カスタムロールを作成するには、既存の事前定義ロールから権限を選択し、ニーズに合わせて組み合わせます。カスタムロールに含めることができる権限は、ロールを作成するスコープ(組織またはプロジェクト)によって異なります。
このセクションでは、使用可能なロール(事前定義ロールとカスタムロールの両方)を一覧表示し、そのロール内の権限を表示する方法について説明します。この情報は、次の目的で使用できます。
- 新しいカスタムロールの権限を特定する: gdcloud CLI を使用してカスタムロールを作成するときに、
--permissionsフラグに必要な特定の権限文字列を確認します。 - 既存のロールを確認する: 選択したスコープ(組織またはプロジェクト)で、事前定義ロールまたはカスタムロールに関連付けられている権限を確認します。
GDC コンソールまたは gdcloud CLI を使用して、ロールを一覧表示し、権限を確認します。
コンソール
- GDC コンソールにログインします。
- プロジェクト セレクタで、ロールを表示する組織またはプロジェクトを選択します。
ナビゲーション メニューで、[ID とアクセス] > [ロール] をクリックします。
使用可能な事前定義ロールとカスタムロールのリストが表示されます。
ロール名をクリックして、割り当てられた権限などの詳細を表示します。
現在のスコープ(組織またはプロジェクト)の事前定義ロールに一覧表示されている権限は、新しいカスタムロールに含めることができる権限です。
gdcloud
- gdcloud CLI がインストールされていることを確認します。詳細については、gdcloud CLI の概要ページをご覧ください。
使用可能なロールを一覧表示します。
gdcloud iam roles list \ --type=ROLE_TYPE \ --project=PROJECT次のように置き換えます。
ROLE_TYPE: 一覧表示するロールのタイプ。有効な値はpredefined、custom、またはallです。PROJECT: ロールを表示するプロジェクトの名前空間。組織スコープのロールの場合は、--projectフラグを省略します。
ロール内の特定の権限を表示します。
gdcloud iam roles describe ROLE_NAME \ --project=PROJECT次のように置き換えます。
ROLE_NAME: ロールの Kubernetes リソース名PROJECT: ロール権限を表示するプロジェクトの名前空間。組織スコープのロールの場合は、--projectフラグを省略します。
コマンドの詳細と使用例については、gdcloud iam roles list と gdcloud iam roles describe をご覧ください。
カスタムロールを作成する
事前定義ロールの権限をグループ化して、新しいカスタムロールを作成します。カスタムロールは、作成元の事前定義ロールの IAM マルチゾーン機能を継承します。カスタムロールを作成したら、ユーザーにアクセス権を付与できます。
GDC コンソール、gdcloud CLI、または API を使用してカスタムロールを作成します。
コンソール
- GDC コンソールにログインします。
- プロジェクト セレクタで、カスタムロールを作成する組織またはプロジェクトを選択します。
- ナビゲーション メニューで、[ID とアクセス] > [ロール] をクリックします。
- [カスタムロールを作成] をクリックします。
- [タイトル] フィールドに、カスタムロールのタイトルを入力します。
- [説明] フィールドに、カスタムロールの目的の説明を入力します。
[ID] フィールドに、カスタムロールの固有識別子を入力します。
カスタムロール ID は、最大 10 文字の英小文字と数字で構成できます。ロールの作成後に変更することはできません。
リリース ステージを選択します。
カスタムロールのスコープを選択します。
[組織] を選択すると、カスタムロールは組織全体のすべてのリソースに適用されます。[プロジェクト] を選択すると、カスタムロールは組織内のすべての現在のプロジェクトと将来のプロジェクトに適用されます。カスタムロールにアクセスできるプロジェクトを指定する場合は、[選択したプロジェクトに制限する] を選択します。
[Add Permissions] をクリックします。
カスタムロールに割り当てるサポートされている権限の横にあるチェックボックスをオンにします。
使用可能な権限は、選択したスコープに限定されます。権限を追加した後にスコープを変更する場合は、以前に割り当てられたすべての権限がリセットされることを確認する必要があります。
[保存] をクリックします。
[作成] をクリックします。
作成した新しいカスタムロールが [ロール] ページに表示されます。
gdcloud
- gdcloud CLI がインストールされていることを確認します。詳細については、gdcloud CLI の概要ページをご覧ください。
カスタムロールを作成します。
gdcloud iam roles create ROLE_ID \ --title=TITLE \ --description=DESCRIPTION \ --permissions=PERMISSIONS --stage=LAUNCH_STAGE次のように置き換えます。
ROLE_ID: カスタムロールの固有識別子。カスタムロール ID は、10 文字以下の英小文字と数字で構成され、ハイフンを含めることができます。カスタムロール ID は、ロールの作成後に変更できません。TITLE: カスタムロールのわかりやすいタイトルDESCRIPTION: カスタムロールの目的の説明PERMISSIONS: カスタムロールに付与する権限のカンマ区切りのリスト正しい権限文字列を見つける方法については、ロールとその権限を表示するをご覧ください。各権限文字列は、gdcloud iam roles create のガイダンスに従ってフォーマットする必要があります。ここで、
iamRoleNameは、権限を含む事前定義ロールの Kubernetes リソース名です。ロールの Kubernetes リソース名は、[ロールの定義] ページで確認するか、gdcloud iam roles list コマンドを使用して確認できます。LAUNCH_STAGE: 省略可。カスタムロールのリリース ステージ。有効な値はALPHA、BETA、GA、またはDISABLEDです。このフラグを省略した場合のデフォルトはALPHAです。
必須フラグとオプション フラグの一覧、および使用例については、gdcloud iam roles create をご覧ください。
または、YAML ファイルでカスタムロールを定義し、
--fileフラグを使用することもできます。gdcloud iam roles create ROLE_ID --file=YAML_FILE_PATHYAML_FILE_PATHは、必須フラグとオプション フラグを含む YAML ファイルのパスに置き換えます。--fileフラグを使用すると、--title、--description、--permissionsなどの他のすべてのフラグは無視されます。
API
kubectl を使用して CustomRole カスタム リソースを作成して適用します。
kubectl apply -f - <<EOF
apiVersion: iam.global.gdc.goog/v1
kind: CustomRole
metadata:
name: ROLE_NAME
namespace: NAMESPACE
spec:
metadata:
description: DESCRIPTION
id: ROLE_ID
scope: SCOPE
stage: LAUNCH_STAGE
title: TITLE
RULES_TYPE:
- RULES_LIST
EOF
次のように置き換えます。
ROLE_NAME: ロールの Kubernetes リソース名NAMESPACE: カスタムロールの名前空間。組織スコープのロールと複数のプロジェクトにはplatformを使用します。プロジェクト スコープのロールと単一のプロジェクトには、プロジェクトの名前空間(my-projectなど)を使用します。DESCRIPTION: カスタムロールの目的の説明ROLE_ID: カスタムロールの固有識別子。カスタムロール ID は、10 文字以下の英小文字と数字で構成され、ハイフンを含めることができます。カスタムロール ID は、ロールの作成後に変更できません。SCOPE:platform名前空間で作成されたロールにはorganizationを使用します。プロジェクトの名前空間で作成されたロールにはprojectを使用します。LAUNCH_STAGE: 省略可。カスタムロールのリリース ステージ。有効な値はALPHA、BETA、GA、またはDISABLEDです。このフィールドを省略した場合のデフォルトはALPHAです。TITLE: カスタムロールのわかりやすいタイトルRULES_TYPE: ルールのスコープ。globalRules(グローバル API の権限の場合)、zonalRules(ゾーン API の権限の場合)、またはその両方に置き換えます。RULES_LIST: 標準の Kubernetes RBAC ルール オブジェクトのインデントされたリスト。リスト内の各オブジェクトは権限を付与します。ロールとその権限を表示するで説明されているように、gdcloud iam roles describeを使用して事前定義ロール内の権限を調べることで、正しいapiGroups、resources、verbsを特定できます。次の例は、
globalRulesオブジェクト内の 1 つのアイテムの構造を示しています。globalRules: - apiGroups: ["storage.global.gdc.goog"] resources: ["buckettypes"] verbs: ["get", "list", "watch"]リストには複数の項目を含めることができ、それぞれに異なる権限セットを定義できます。
カスタムロールを管理する
カスタムロールのライフサイクルはお客様が管理する責任があります。Distributed Cloud に新しい権限、機能、サービスが追加されると、事前定義ロールが更新されます。事前定義ロールの削除や、事前定義ロールからの権限の削除などの更新により、それらの権限に依存するカスタムロールが機能しなくなる可能性があります。これらの更新をモニタリングし、影響を受けるカスタムロールを手動で調整して、想定どおりに機能し続けるようにする必要があります。
カスタムロールは編集、無効化、削除できますが、事前定義ロールは編集、無効化、削除できません。すべてのロールとそれぞれに固有の権限の一覧を表示するには、ロールと権限を表示するをご覧ください。
カスタムロールを編集する
GDC コンソール、gdcloud CLI、または API を使用してカスタムロールを編集します。
コンソール
- GDC コンソールにログインします。
- プロジェクト セレクタで、カスタムロールを編集する組織またはプロジェクトを選択します。
- ナビゲーション メニューで、[ID とアクセス] > [ロール] をクリックします。
- ロールのリストから、編集するカスタムロールを選択します。
- カスタムロールの詳細ページで、[編集] をクリックします。
- タイトル、説明、ID、リリース ステージなどのカスタムロールの詳細を編集します。
- 必要に応じて、割り当てられた権限を追加または削除します。
- [権限を追加] をクリックして、使用可能な権限のリストから選択します。
- 割り当てられた権限を削除するには、削除する権限の横にあるチェックボックスをオンにして、[削除] をクリックします。
[保存] をクリックします。
変更内容が保存されたことを確認するメッセージが表示されます。
gdcloud
- gdcloud CLI がインストールされていることを確認します。詳細については、gdcloud CLI の概要ページをご覧ください。
カスタムロールを編集する:
gdcloud iam roles update ROLE_ID \ --title=TITLE \ --description=DESCRIPTION \ --permissions=PERMISSIONS --stage=LAUNCH_STAGE次のように置き換えます。
ROLE_ID: カスタムロールの固有識別子TITLE: カスタムロールのわかりやすいタイトルDESCRIPTION: カスタムロールの目的の説明PERMISSIONS: カスタムロールに付与する権限のカンマ区切りのリスト正しい権限文字列を見つける方法については、ロールとその権限を表示するをご覧ください。各権限文字列は、gdcloud iam roles create のガイダンスに従ってフォーマットする必要があります。ここで、
iamRoleNameは、権限を含む事前定義ロールの Kubernetes リソース名です。ロールの Kubernetes リソース名は、[ロールの定義] ページで確認するか、gdcloud iam roles list コマンドを使用して確認できます。LAUNCH_STAGE: 省略可。カスタムロールのリリース ステージ。有効な値はALPHA、BETA、GA、またはDISABLEDです。このフラグを省略した場合のデフォルトはALPHAです。
必須フラグとオプション フラグの一覧と使用例については、gdcloud iam roles update をご覧ください。
または、YAML ファイルでカスタムロールを更新し、
--fileフラグを使用することもできます。gdcloud iam roles update ROLE_ID --file=YAML_FILE_PATHYAML_FILE_PATHは、更新された必須フラグとオプション フラグを含む YAML ファイルのパスに置き換えます。--fileフラグを使用すると、--title、--description、--permissionsなどの他のフラグはすべて無視されます。
API
kubectl を使用して CustomRole カスタム リソースを編集します。
kubectl apply -f - <<EOF
apiVersion: iam.global.gdc.goog/v1
kind: CustomRole
metadata:
name: ROLE_NAME
namespace: NAMESPACE
spec:
metadata:
description: DESCRIPTION
id: ROLE_ID
scope: SCOPE
stage: LAUNCH_STAGE
title: TITLE
RULES_TYPE:
- RULES_LIST
EOF
次のように置き換えます。
ROLE_NAME: ロールの Kubernetes リソース名NAMESPACE: カスタムロールの名前空間。組織スコープのロールと複数のプロジェクトにはplatformを使用します。プロジェクト スコープのロールと単一のプロジェクトには、プロジェクトの名前空間(my-projectなど)を使用します。DESCRIPTION: カスタムロールの目的の説明ROLE_ID: カスタムロールの固有識別子。カスタムロール ID は、10 文字以下の英小文字と数字で構成され、ハイフンを含めることができます。カスタムロール ID は、ロールの作成後に変更できません。SCOPE:platform名前空間で作成されたロールにはorganizationを使用します。プロジェクトの名前空間で作成されたロールにはprojectを使用します。LAUNCH_STAGE: 省略可。カスタムロールのリリース ステージ。有効な値はALPHA、BETA、GA、またはDISABLEDです。このフィールドを省略した場合のデフォルトはALPHAです。TITLE: カスタムロールのわかりやすいタイトルRULES_TYPE: ルールのスコープ。globalRules(グローバル API の権限の場合)、zonalRules(ゾーン API の権限の場合)、またはその両方に置き換えます。RULES_LIST: 標準の Kubernetes RBAC ルール オブジェクトのインデントされたリスト。リスト内の各オブジェクトは権限を付与します。ロールとその権限を表示するに示されているように、gdcloud iam roles describeを使用して事前定義ロール内の権限を調べることで、正しいapiGroups、resources、verbsを特定できます。次の例は、
globalRulesオブジェクト内の 1 つのアイテムの構造を示しています。globalRules: - apiGroups: ["storage.global.gdc.goog"] resources: ["buckettypes"] verbs: ["get", "list", "watch"]リストには複数の項目を含めることができ、それぞれに異なる権限セットを定義できます。
カスタムロールを無効にする
無効にしたカスタムロールはロールのリストに残り、ユーザーに割り当てることができますが、ロールは効果がありません。カスタムロールはいつでも再度有効にできます。
GDC コンソール、gdcloud CLI、または API を使用してカスタムロールを無効にします。
コンソール
- GDC コンソールにログインします。
- プロジェクト セレクタで、カスタムロールを無効にする組織またはプロジェクトを選択します。
- ナビゲーション メニューで、[ID とアクセス] > [ロール] をクリックします。
- ロールのリストで、無効にするカスタムロールを選択します。
- カスタムロールの詳細ページで、[無効にする] をクリックします。
gdcloud
- gdcloud CLI がインストールされていることを確認します。詳細については、gdcloud CLI の概要ページをご覧ください。
カスタムロールを無効にする:
gdcloud iam roles update ROLE_ID --stage=DISABLED次のように置き換えます。
ROLE_ID: カスタムロールの固有識別子
詳細については、gdcloud iam roles update をご覧ください。
API
stage フィールドを DISABLED に変更して、CustomRole カスタム リソースを無効にします。他のすべてのフィールドが、無効にするカスタムロールの現在の値と一致していることを確認します。
kubectl apply -f - <<EOF
apiVersion: iam.global.gdc.goog/v1
kind: CustomRole
metadata:
name: ROLE_NAME
namespace: NAMESPACE
spec:
metadata:
description: DESCRIPTION
id: ROLE_ID
scope: SCOPE
stage: DISABLED
title: TITLE
RULES_TYPE:
- RULES_LIST
EOF
次のように置き換えます。
ROLE_NAME: ロールの Kubernetes リソース名NAMESPACE: カスタムロールの名前空間。組織スコープのロールと複数のプロジェクトにはplatformを使用します。プロジェクト スコープのロールと単一のプロジェクトには、プロジェクトの名前空間(my-projectなど)を使用します。DESCRIPTION: カスタムロールの目的の説明ROLE_ID: カスタムロールの固有識別子。カスタムロール ID は、10 文字以下の英小文字と数字で構成され、ハイフンを含めることができます。カスタムロール ID は、ロールの作成後に変更できません。SCOPE:platform名前空間で作成されたロールにはorganizationを使用します。プロジェクトの名前空間で作成されたロールにはprojectを使用します。TITLE: カスタムロールのわかりやすいタイトルRULES_TYPE: ルールのスコープ。globalRules(グローバル API の権限の場合)、zonalRules(ゾーン API の権限の場合)、またはその両方に置き換えます。RULES_LIST: 標準の Kubernetes RBAC ルール オブジェクトのインデントされたリスト。リスト内の各オブジェクトは権限を付与します。ロールとその権限を表示するに示されているように、gdcloud iam roles describeを使用して事前定義ロール内の権限を調べることで、正しいapiGroups、resources、verbsを特定できます。次の例は、
globalRulesオブジェクト内の 1 つのアイテムの構造を示しています。globalRules: - apiGroups: ["storage.global.gdc.goog"] resources: ["buckettypes"] verbs: ["get", "list", "watch"]リストには複数の項目を含めることができ、それぞれに異なる権限セットを定義できます。
カスタムロールを削除する
削除されたロールはシステムから完全に削除されますが、同じ名前で新しいロールを作成できます。
gdcloud CLI または API を使用してカスタムロールを削除します。
gdcloud
- gdcloud CLI がインストールされていることを確認します。詳細については、gdcloud CLI の概要ページをご覧ください。
カスタムロールを削除する:
gdcloud iam roles delete ROLE_ID --project=PROJECT次のように置き換えます。
ROLE_ID: カスタムロールの固有識別子PROJECT: カスタムロールを削除するプロジェクトの名前空間。--projectフラグが指定されていない場合、組織スコープのロールが削除されます。
詳細と使用例については、gdcloud iam roles delete をご覧ください。
API
kubectl を使用して CustomRole カスタム リソースを削除します。
kubectl delete -f CUSTOM_ROLE
CUSTOM_ROLE は、CustomRole YAML ファイルのパスに置き換えます。これは、ロールの作成または更新に使用したファイルと同じです。