このページでは、Google Distributed Cloud(GDC)エアギャップでカスタムロールを作成して管理する方法について説明します。カスタムロールを使用すると、事前定義ロールで使用可能な標準の権限セットを超えてアクセスを管理し、特定の条件を満たすように権限を構成できます。
カスタムロールは最小権限の原則に従っており、機密性の高いタスクに必要な最小限のアクセス権を付与し、セキュリティ リスクを軽減し、利益相反を防ぐのに役立ちます。
カスタムロールを作成すると、次のことができます。
- アクセス範囲を定義する: 権限を組織全体、すべてのプロジェクトに適用するか、特定のプロジェクトに制限するかを選択します。
- 詳細なアクセス権を調整する: 事前定義ロールですでに使用可能な 1 つ以上の権限を選択して、特定のタスクや責任へのアクセス権をカスタマイズします。
このページは、組織のリソースへのアクセスを安全に管理する IT 管理者やセキュリティ エンジニアなど、プラットフォーム管理者グループ内のユーザーを対象としています。詳細については、GDC エアギャップの対象ユーザーに関するドキュメントをご覧ください。
ロールの詳細については、事前定義ロールの説明とロールの定義をご覧ください。
始める前に
カスタムロールのアクセス権は、組織レベルとプロジェクト レベルの両方で管理されます。アクセス権は、カスタムロールが作成された同じ組織またはプロジェクト内で付与できます。
カスタムロールの作成と管理に必要な権限を取得するには、次のいずれかのロールを付与するよう管理者に依頼してください。
カスタムロールの組織管理者: 組織またはプロジェクト内でカスタムロールを作成して管理します。このロールには、カスタムロールの更新、一覧表示、表示、無効化、削除を行う権限が含まれています。
組織の IAM 管理者ユーザーは、このロールを付与できます。
カスタムロール プロジェクト管理者: プロジェクト内でカスタムロールを作成して管理します。このロールには、カスタムロールの更新、一覧表示、表示、無効化、削除を行う権限が含まれています。
このロールを付与できるのは、プロジェクト IAM 管理者ユーザーです。
組織とプロジェクトのロールの権限の割り当てについて確認する。
ロールとその権限を表示する
カスタムロールは、ユーザーに割り当てることができる権限のグループで構成されます。カスタムロールを作成するには、既存の事前定義ロールから権限を選択し、ニーズに合わせて組み合わせます。カスタムロールに含めることができる権限は、ロールを作成するスコープ(組織またはプロジェクト)によって異なります。
このセクションでは、使用可能なロール(事前定義ロールとカスタムロールの両方)を一覧表示し、そのロール内の権限を表示する方法について説明します。この情報を使用して、次のことができます。
- 新しいカスタムロールの権限を特定する: gdcloud CLI を使用してカスタムロールを作成するときに、
--permissionsフラグに必要な特定の権限文字列を確認します。 - 既存のロールを確認する: 選択したスコープ(組織またはプロジェクト)で、事前定義ロールまたはカスタムロールに関連付けられている権限を確認します。
GDC コンソールまたは gdcloud CLI を使用してロールを一覧表示し、権限を確認します。
コンソール
- GDC コンソールにログインします。
- プロジェクト セレクタで、ロールを表示する組織またはプロジェクトを選択します。
ナビゲーション メニューで、[ID とアクセス] > [ロール] をクリックします。
使用可能な事前定義ロールとカスタムロールのリストが表示されます。
ロール名をクリックすると、割り当てられた権限などの詳細が表示されます。
現在のスコープ(組織またはプロジェクト)で事前定義ロールにリストされている権限は、新しいカスタムロールに含めることができる権限です。
gdcloud
- gdcloud CLI がインストールされていることを確認します。詳細については、gdcloud CLI の概要ページをご覧ください。
使用可能なロールを一覧表示します。
gdcloud iam roles list ROLE_TYPE \ --project=PROJECT次のように置き換えます。
ROLE_TYPE: 一覧表示するロールのタイプ。有効な値はpredefined、custom、allです。PROJECT: ロールを表示するプロジェクトの名前空間。組織スコープのロールの場合は、--projectフラグを省略します。
ロール内の特定の権限を表示します。
gdcloud iam roles describe ROLE_NAME \ --project=PROJECT次のように置き換えます。
ROLE_NAME: ロールの Kubernetes リソース名。PROJECT: ロールの権限を表示するプロジェクトの Namespace。組織スコープのロールの場合は、--projectフラグを省略します。
コマンドの詳細と使用例については、gdcloud iam roles list と gdcloud iam roles describe をご覧ください。
カスタムロールの作成
事前定義されたロールの権限をグループ化して、新しいカスタムロールを作成します。カスタムロールは、基盤となる事前定義ロールの IAM マルチゾーン機能を継承します。カスタムロールを作成したら、ユーザーにアクセス権を付与できます。
GDC コンソール、gdcloud CLI、または API を使用してカスタムロールを作成します。
コンソール
- GDC コンソールにログインします。
- プロジェクト セレクタで、カスタムロールを作成する組織またはプロジェクトを選択します。
- ナビゲーション メニューで、[ID とアクセス] > [ロール] をクリックします。
- [カスタムの役割を作成] をクリックします。
- [タイトル] フィールドに、カスタムロールのタイトルを入力します。
- [説明] フィールドに、カスタムロールの目的の説明を入力します。
[ID] フィールドに、カスタムロールの一意の識別子を入力します。
カスタムロール ID は 10 文字以下の小文字の英数字で、ロールの作成後に変更することはできません。
[リリース段階] を選択します。
カスタムロールのスコープを選択します。
[組織] を選択すると、カスタムロールは組織内のすべてのリソースに適用されます。[プロジェクト] を選択すると、カスタムロールは組織内の現在と将来のすべてのプロジェクトに適用されます。カスタムロールにアクセスできるプロジェクトを指定する場合は、[選択したプロジェクトに制限する] を選択します。
[権限を追加] をクリックします。
カスタムロールに割り当てる 1 つ以上のサポートされている権限の横にあるチェックボックスをオンにします。
使用可能な権限は、選択したスコープに限定されます。権限を追加した後にスコープを変更する場合は、以前に割り当てられたすべての権限がリセットされることを確認する必要があります。
[保存] をクリックします。
[作成] をクリックします。
新しいカスタムロールが [ロール] ページに表示されます。
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: カスタムロールの Namespace。組織スコープのロールと複数のプロジェクトにはplatformを使用します。プロジェクト スコープのロールと単一プロジェクトには、プロジェクト Namespace(my-projectなど)を使用します。DESCRIPTION: カスタムロールの目的の説明。ROLE_ID: カスタムロールの固有識別子。カスタムロール ID は 10 文字以下の英小文字で、ハイフンを含めることができます。カスタムロール ID は、ロールの作成後に変更できません。SCOPE:platformNamespace で作成されたロールにはorganizationを使用します。プロジェクト Namespace で作成されたロールにはprojectを使用します。LAUNCH_STAGE: 省略可。カスタムロールのリリース ステージ。有効な値はALPHA、BETA、GA、またはDISABLEDです。このフィールドを省略した場合のデフォルトはALPHAです。TITLE: カスタムロールのわかりやすいタイトル。RULES_TYPE: このフィールドは、ルールのスコープを定義します。globalRules(グローバル API の権限の場合)またはzonalRules(ゾーン API の権限の場合)に置き換えます。同じCustomRoleリソースで両方を使用することはできません。RULES_LIST: 標準の Kubernetes RBAC ルール オブジェクトのインデントされたリスト。リスト内の各オブジェクトは権限を付与します。ロールとその権限を表示するで説明されているように、gdcloud iam roles describeを使用して事前定義ロール内の権限を調べると、正しいapiGroups、resources、verbsを特定できます。次の例は、
globalRulesオブジェクト内の単一アイテムの構造を示しています。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: カスタムロールの Namespace。組織スコープのロールと複数のプロジェクトにはplatformを使用します。プロジェクト スコープのロールと単一プロジェクトには、プロジェクト Namespace(my-projectなど)を使用します。DESCRIPTION: カスタムロールの目的の説明。ROLE_ID: カスタムロールの固有識別子。カスタムロール ID は 10 文字以下の英小文字で、ハイフンを含めることができます。カスタムロール ID は、ロールの作成後に変更できません。SCOPE:platformNamespace で作成されたロールにはorganizationを使用します。プロジェクト Namespace で作成されたロールにはprojectを使用します。LAUNCH_STAGE: 省略可。カスタムロールのリリース ステージ。有効な値はALPHA、BETA、GA、またはDISABLEDです。このフィールドを省略した場合のデフォルトはALPHAです。TITLE: カスタムロールのわかりやすいタイトル。RULES_TYPE: このフィールドは、ルールのスコープを定義します。globalRules(グローバル API の権限の場合)またはzonalRules(ゾーン API の権限の場合)に置き換えます。同じCustomRoleリソースで両方を使用することはできません。RULES_LIST: 標準の Kubernetes RBAC ルール オブジェクトのインデントされたリスト。リスト内の各オブジェクトは権限を付与します。ロールとその権限を表示するで説明されているように、gdcloud iam roles describeを使用して事前定義ロール内の権限を調べると、正しいapiGroups、resources、verbsを特定できます。次の例は、
globalRulesオブジェクト内の単一アイテムの構造を示しています。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: カスタムロールの Namespace。組織スコープのロールと複数のプロジェクトにはplatformを使用します。プロジェクト スコープのロールと単一プロジェクトには、プロジェクト Namespace(my-projectなど)を使用します。DESCRIPTION: カスタムロールの目的の説明。ROLE_ID: カスタムロールの固有識別子。カスタムロール ID は 10 文字以下の英小文字で、ハイフンを含めることができます。カスタムロール ID は、ロールの作成後に変更できません。SCOPE:platformNamespace で作成されたロールにはorganizationを使用します。プロジェクト Namespace で作成されたロールにはprojectを使用します。TITLE: カスタムロールのわかりやすいタイトル。RULES_TYPE: このフィールドは、ルールのスコープを定義します。globalRules(グローバル API の権限の場合)またはzonalRules(ゾーン API の権限の場合)に置き換えます。同じCustomRoleリソースで両方を使用することはできません。RULES_LIST: 標準の Kubernetes RBAC ルール オブジェクトのインデントされたリスト。リスト内の各オブジェクトは権限を付与します。ロールとその権限を表示するで説明されているように、gdcloud iam roles describeを使用して事前定義ロール内の権限を調べると、正しいapiGroups、resources、verbsを特定できます。次の例は、
globalRulesオブジェクト内の単一アイテムの構造を示しています。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: カスタムロールを削除するプロジェクトの Namespace。--projectフラグが指定されていない場合、組織スコープのロールは削除されます。
詳細と使用例については、gdcloud iam roles delete をご覧ください。
API
kubectl を使用して CustomRole カスタム リソースを削除します。
kubectl delete -f CUSTOM_ROLE
CUSTOM_ROLE は、CustomRole YAML ファイルのパスに置き換えます。これは、ロールの作成または更新に使用したファイルと同じです。