事前定義ロールの使用
関連デザインパターンにおいては、共通のペルソナ企業の要件を元に記述しています。
【前提:ペルソナ企業の抱える要件】
組織のポリシー・IAM 権限
Google Cloud の主管チームがあり、Google Cloud を利用したい部署は主管チームにプロジェクトとユーザーを払い出す申請を行う手続きとなっている
大半がユーザーについて国内からの利用が見込まれることと法制度上の観点から、国内リージョンのリソースのみを利用することが好ましい
利用者は自部署のサービスについての権限のみを持つことができ、他部署の管轄するサービスについては、いかなる権限も持たせたくない
本番、開発、評価、Sandbox 環境を作りたい
Cloud IAM ポリシーに追加できる一連のメンバーを制限したい
期間・時間限定でアクセスを許可したいユースケースがある
これらの前提となる要件を元に、事前定義ロールの果たす役割について説明して参ります。
デザイン パターン詳細
事前定義ロールを使用する
解決する課題・使い所
大規模な企業において、組織のポリシーと相互補完をしながら、業務上の職責に応じて複数の事前定義ロールを付与する形での権限管理は不可欠です。ここからいくつかの項においては、いくつかの職責を例にとり、事前定義ロールを組み合わせて権限を付与する手法について見ていきます。
Cloud IAM においては、基本ロール、事前定義ロール、カスタムロールがありますが、ここでは各ロール種別についての説明は割愛いたします。本項の、参考ドキュメント 1 の情報を合わせてご参照ください。
ペルソナ企業は、事前に以下参考ドキュメント 2 の “ Google Cloud 設定のチェックリスト ( オンボーディングチェックリスト)” の手順に従って、企業としてのクラウド利用の準備が完了していることを想定しています。
本項に記載した権限付与のアプローチは、Google Cloud のドキュメント “ エンタープライズ企業のベスト プラクティス ” における推奨事項を踏襲しています。合わせて、以下 参考ドキュメント 3 をご参照ください。
参考ドキュメント:
本項では、ネットワーク 管理者、セキュリティ管理者、開発者 という職掌を例に取り、事前定義ロールの適用例を示します。
アーキテクチャ 1. ネットワーク管理者
アーキテクチャ 2. セキュリティ管理者
アーキテクチャ 3. 開発者
アプローチ
ベストプラクティスに基づき、ユーザではなくグループを作成し、グループ に対して権限を付与します。
グループの作成・管理は、管理コンソール(admin.google.com)で行います(利用中の組織のドメインに対する管理者権限が必要です)。
本項での説明上、作成するグループ名は、それぞれ以下のように仮定します。
ネットワーク管理者: “ network-admins ”
セキュリティ管理者: “ security-admins ”
開発者: “ developers ”
各ロールで実施するべき作業内容と、考慮事項は以下のものとします。
ネットワーク管理者
ネットワーク、サブネットの作成、並びに Cloud Router、Cloud VPN、Cloud Load Balancer などのネットワークデバイスを作成します。
Firewall のルールのメンテナンスを実施します。
セキュリティ管理者
組織、フォルダー、並びにプロジェクトのポリシーと制限を確立します
ログやリソースへの View アクセス(操作ではなく、可視化のみ許可されている必要があります)。
ペルソナ企業では、プロジェクト内で、GCE (Google Compute Engine )、GKE(Google Kubernetes Engine)、GAE(Google App Engine)と、BigQuery、CloudSQL を利用していることとし、各プロダクトの Viewer 権限を付与します。実プロジェクトへの展開の際には利用中のプロダクトに合わせた権限を付与することになります。
開発者グループ
すでにインスタンス化されている環境(GCE、GKE)を使用して、アプリケーションを開発します。
DB 等へのアクセス権限の設定 は別途 サービスアカウント向けの権限として付与済とします。
上記のネットワーク管理者の権限の多くは、組織(企業)の下のプロジェクト全般に関わるため、多くの権限は組織のレベルで付与します。
利点
グループ を作成し、必要な事前定義ロールを付与することで新たに各チームにメンバー が追加された場合、各グループへのユーザの追加だけで、既存の定義済みの権限を踏襲させることが可能となります。各グループへの権限移譲、移動があった際にも、グループへの権限付与、剥奪により維持が可能です。
注意事項
グループ の作成には、管理コンソール (admin.google.com)の管理者権限が別途必要となります。
サンプル コンフィグや Code(提供可能な場合)
ネットワーク管理者
ネットワーク管理者( network-admins )グループに付与する事前定義ロール権限と、概要は以下の通りです。
Compute network admin(roles/compute.networkAdmin) :ネットワーキング リソース(ファイアウォール ルールと SSL 証明書を除く)を作成、変更、削除する権限。ネットワーク管理者のロールにより、ファイアウォール ルール、SSL 証明書、インスタンス(それぞれのエフェメラル IP アドレスの表示用)への読み取り専用アクセスを付与できます。ネットワーク管理者ロールでは、インスタンスの作成、起動、停止、削除はできません。組織レベルで付与します。
Compute Shared VPC admin( roles/compute.xpnAdmin):共有 VPC ホスト プロジェクトを管理する権限。特にホスト プロジェクトを有効にし、共有 VPC サービス プロジェクトをホスト プロジェクトのネットワークに関連付ける権限。組織レベルで付与します。 別途、共有 VPC ホストプロジェクト以下のリソースにアクセスするための owner 権限が各プロジェクトで必要となりますが、事前定義ロールではなく、基本ロールでの取り扱い( roles/owner)となりますので、本項では補足のみとします。
Folder Viewer (roles/resourcemanager.folderViewer ) :フォルダの取得、リソース内のフォルダとプロジェクトの一覧表示ができる権限。組織レベルで付与します。
Compute Security admin(roles/compute.securityAdmin):ファイアウォール ルールと SSL 証明書を作成、変更、削除する権限。組織レベルで付与します。
セキュリティ管理者( security-admins )
セキュリティ管理者( security-admins )グループに付与する事前定義ロール権限と、概要は以下の通りです(今回は、組織を横断したセキュリティ管理者がいると言う想定で、各項目を組織レベルに適用します)。
Org policy Admin(roles/orgpolicy.policyAdmin):組織のポリシーによるクラウド リソースの構成制限を定義する権限を付与します。
Org policy Viewer ( roles/orgpolicy.policyViewer ) :リソースの組織のポリシーを表示するためのアクセス権を付与します。
Security reviewer ( roles/iam.securityReviewer ):すべてのリソースとその IAM ポリシーを一覧表示する権限を付与します。
Organization role viewer ( roles/iam.organizationRoleViewer ):組織とその下のプロジェクト内のすべてのカスタムロールへの読み取り権限を付与します。
Folder IAM admin ( roles/resourcemanager.folderIamAdmin ) : フォルダの IAM ポリシーを管理する権限を付与します。
Private logs viewer ( roles/logging.privateLogViewer ):ログ閲覧者のロールの権限、およびプライベート ログ内のエントリに対する読み取り専用アクセス権を付与します。
Logs configuration writer ( roles/logging.configWriter ):ログをエクスポートするためのログベースの指標とシンクの構成に対する読み取りおよび書き込み権限を付与します。
Compute viewer ( roles/compute.viewer ):Compute Engine リソースを取得して表示する読み取りアクセス権。格納されたデータを読み取ることはできません。
Kubernetes engine viewer ( roles/container.viewer ):GKE リソースに対する読み取り専用アクセス権を付与します。
App Engine Viewer ( roles/appengine.appViewer ):AppEngine のすべてのアプリケーション構成への読み取り専用アクセス権を付与します。
BigQuery Data Viewer ( roles/bigquery.dataViewer ):プロジェクトまたは組織レベルで適用した場合、このロールは、プロジェクト内のすべてのデータセットを列挙することもできます。ただし、ジョブを実行するためには別途他のロールが必要です。
CloudSQL Viewer (roles/cloudsql.viewer ):Cloud SQL リソースに対する読み取り専用権限を付与します。
開発者( developers )
開発者( developers )グループに付与する事前定義ロール権限と、概要は以下の通りです。
Compute Admin ( roles/compute.admin ) :Compute Engine リソースのすべてを管理する権限。
Kubernetes engine admin ( roles/container.admin ) : クラスタとその Kubernetes API オブジェクトを完全に管理するためのアクセス権を付与します。
関係するデザインパターン
適切な組織、フォルダ構成と権限付与
組織のポリシー設定
IAM Conditions の使用