コンテンツにスキップ

bind_role pattern

概要

bind_role patternモジュールでは、Delivery環境のIAMユーザーからRuntime環境のIAMロールへスイッチロールするためのIAMポリシーを作成します。

本patternモジュールにより、Staging環境ではdeveloperのRoleを持たせるがRuntime環境ではviewerのRoleしか持たせないといった、柔軟なRoleの紐付けを実現します。

想定する適用対象環境

bind_role patternは、Delivery環境で使用されることを想定しています。

依存するpattern

bind_role patternモジュールはusers patternモジュールとroles patternモジュールとセットで実行します。各モジュールの役割、実行順序は以下のとおりです。

  1. users pattern:Delivery環境にIAMユーザーを作成します
  2. bind_role pattern:Runtime環境のIAMロールへスイッチロールするIAMポリシーを作成し、Delivery環境のIAMユーザーへアタッチします
  3. roles pattern:Runtime環境のIAMロールを作成します

構築されるリソース

このpatternでは、以下のリソースが構築されます。

リソース名 説明
IAMポリシー Delivery環境のIAMユーザーへ付与する、runtime環境のIAMロールへスイッチロールするためのIAMポリシーを作成します

モジュールの理解に向けて

bind_role patternではIAMユーザーに付与するIAMポリシーを作成します。

bind_role patternでは、Delivery環境上のIAMユーザー1がRuntime環境上の以下のIAM Role2にスイッチロールできるようなIAMポリシーを作成します。

なおロール名の%sは、本patternの入力パラメータであるsystem_nameの値をCamelCaseとして変換した文字列に置き換えてください。例えばsystem_name"epona"を指定した場合、管理者ロールの名前はEponaAdminRoleとなります。

ロール名 説明
%sAdminRole 管理者ロール(全ての作業を行う権限をもちます)
%sViewerRole 閲覧者ロール(全リソースの閲覧のみできる権限をもちます)
%sOperatorRole 作業者ロール(読み取り宣言+運用で必要な権限をもちます)
%sDeveloperRole 開発者ロール(NWなどインフラ系サービスの操作や秘匿パラメータの参照を除いたリソースを操作する権限をもちます)
%sCostManagerRole コスト管理者ロール(課金情報の操作のみできる権限をもちます)
%sApproverRole 承認者ロール(CI/CDの承認のみ可能な権限をもちます)

IAMユーザーは各権限のIAMロールへスイッチロールすることで、必要な権限を取得します。

bind_role patternはDelivery環境からRuntime環境へスイッチロールする環境を構築します。

IAMユーザ関連のpattern

サンプルコード

bind_role patternを使用したサンプルコードを、以下に記載します。

module "bind_roles" {
  source           = "git::https://gitlab.com/eponas/epona.git//modules/aws/patterns/bind_role?ref=v0.2.6"
  admins           = ["taro", "hanako"]
  approvers        = ["taro", "yoko"]
  costmanagers     = ["taro", "ryota"]
  developers       = ["hanako", "chiharu"]
  operators        = ["hanako", "ayaka"]
  viewers          = ["hanako", "yoshiki"]
  account_id       = "XXXXXXXXXX"
  environment_name = "production"
  system_name      = "hori"
}

関連するpattern

bind_role patternに関連するpatternを、以下に記載します。

pattern名 説明
users pattern Delivery環境のIAMユーザーを作成します
roles pattern このpatternで作成したIAMユーザーからスイッチするIAMロール(Runtime環境)を作成します

入出力リファレンス

Requirements

Name Version
terraform ~> 0.14.10
aws >= 3.37.0, < 4.0.0

Inputs

Name Description Type Default Required
account_id ユーザーがAssume role可能なAWSアカウントID string n/a yes
admins adminへスイッチロール可能なユーザー一覧 list(string) n/a yes
approvers approverへスイッチロール可能なユーザー一覧 list(string) n/a yes
costmanagers costmanagerへスイッチロール可能なユーザー一覧 list(string) n/a yes
developers developerへスイッチロール可能なユーザー一覧 list(string) n/a yes
environment_name スイッチ先の環境名 string n/a yes
operators operatorへスイッチロール可能なユーザー一覧 list(string) n/a yes
system_name システム名 string n/a yes
viewers viewerへスイッチロール可能なユーザー一覧 list(string) n/a yes

Outputs

No output.


  1. users pattern で作成します。 

  2. roles patternで作成します。 


※ このドキュメントはクリエイティブコモンズ(Creative Commons) 4.0 の「表示—継承」に準拠しています。

※ このドキュメントに記載されている会社名、製品名は、各社の登録商標または商標です。

© 2021 TIS Inc.