IAM Conditions の使用
関連デザインパターンにおいては、共通のペルソナ企業の要件を元に記述しています。
【前提:ペルソナ企業の抱える要件】
組織のポリシー・IAM 権限
Google Cloud の主管チームがあり、Google Cloud を利用したい部署は主管チームにプロジェクトとユーザーを払い出す申請を行う手続きとなっている
大半がユーザーについて国内からの利用が見込まれることと法制度上の観点から、国内リージョンのリソースのみを利用することが好ましい
利用者は自部署のサービスについての権限のみを持つことができ、他部署の管轄するサービスについては、いかなる権限も持たせたくない
本番、開発、評価、Sandbox 環境を作りたい
Cloud IAM ポリシーに追加できる一連のメンバーを制限したい
期間・時間限定でアクセスを許可したいユースケースがある
これらの前提となる要件を元に、具体的に求められる要件をベースとして、 IAM Conditions の利用モデルについて説明して参ります。
デザイン パターン詳細
IAM Conditions を用いた条件付き権限付与
解決する課題・使い所
プロジェクト管理の観点から、「特定の期間(プロジェクトの特定のフェーズ中)のみアクセスを許可したいグループがいる」というような課題が出てきます。
IAM Conditions により、ロールに条件を付与することにより、「条件に合致した場合には権限を行使できる」という形でより細やかな制御が可能となります。
例えば、開発の一部を外注のベンダーに委託しており、依頼している期間の平日の特定の時間帯のみアクセス可能とし、期間が終了した後は自動的にアクセス不可となるようにしたいとします。
IAM Conditions の概要と現時点でサポートされている「条件」「リソース」については、以下参考ドキュメントをご参照ください。
アプローチ・前提
外注ベンダーのメンバーは、 フォルダ以下のプロジェクトには権限を持たないが、開発に用いる別途フォルダに権限を持つこととします。
外注ベンダーのメンバーは既にインフラ化されている環境にアクセスをし、開発を行います。
外注ベンダーのメンバーは、2021 年 2 月 28 日までの間の月曜から金曜の 8 時から 19 時の間のみ、作業を許可されるものとします。
外注ベンダーのメンバーの権限管理のために、sub-contracts グループを作成し、同グループに権限を付与します。
利点
外注ベンダーへの権限を期限・曜日・時間などの条件で指定することにより、付与した権限の回収をスケジュールすることが可能です。
より詳細な要件がある場合、ロール毎に条件をつけて管理を行うことも可能です。
注意事項
グループの作成には、管理コンソール(admin.google.com)の管理者権限が別途必要となります。
サンプル コンフィグや Code(提供可能な場合)
付与する事前定義済みロールは以下のものとします。
Compute Admin(roles/compute.admin)Compute Engine リソースのすべてを管理する権限。
Kubernetes engine admin(roles/container.admin): クラスタとその Kubernetes API オブジェクトを完全に管理するためのアクセス権を付与します。
上記権限付与の際に、[ 条件を追加 ]をクリックし 、“ 条件の編集 ” 面を呼び出します。
[条件タイプ] > [ 時刻] > [アクセスの有効期限] と進めて、希望の条件を入力します。
注:上スクリーンショットでは、条件ビルダー タブを用いた条件指定をしていますが、条件ビルダーで、全ての書式がカバーされているわけではありません。本項記載のドキュメントのリンクなどを参照の上、必要に応じて、条件エディタから設定を確認・修正します。
関係するデザインパターン
適切な組織、フォルダ構成と権限付与
組織のポリシー設定
事前定義ロールの使用