Slide 1

Slide 1 text

AssumePolicyの意外なハマりどころ Monday, March 14. 2022 Haruka Sakihara JAWS-UG朝会 #31 JAWS-UG logo is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

Slide 2

Slide 2 text

自己紹介 Haruka Sakihara <取得資格> • ネットワークスペシャリスト試験(IPA) • AWS Certified Security等4資格 • アクセンチュア株式会社 テクノロジーコンサルティング本部所属 • 普段はクラウドインフラ構築の支援をしておりま す • アプリケーション……プライベートだとGo, 仕事だ と少しPython • インフラ……ほとんどAWS This presentation makes reference to marks owned by third parties. Unless otherwise noted, all such third-party marks are the property of their respective owners. No sponsorship, endorsement or approval of this content by the owners of such marks is intended, expressed or implied.

Slide 3

Slide 3 text

今回実現したいこと とあるAssumeRoleの権限移譲先として、「あるグループに属している IAMユーザー全員」を指定したいというケースを考えます。 Users IAM User Group Assume Policy

Slide 4

Slide 4 text

AssumePolicyのプリンシパルに指定できる要素 AWS公式ドキュメントより 出典: AWS公式ドキュメント - AWS JSON ポリシーの要素: Principal ポリシーでは、次のいずれかのプリンシパルを指定で きます。 • AWS アカウントおよびルートユーザー • IAM ロール • ロールセッション • IAM ユーザー • フェデレーティッドユーザーセッション • AWS のサービス • すべてのプリンシパル Error creating IAM Role role-A: MalformedPolicyDocument: Invalid principal in policy IAMグループは対象外! IAMグループを指定すると・・・ しかし、IAMユーザーグループをAssumePolicyのプリンシパルに指定することは できません。

Slide 5

Slide 5 text

解決策: TerraformのDataSourceを利用 出典: Terraform公式ドキュメント - provider/aws Data Source: aws_iam_group data.aws_iam_group.example.usersで所属ユー ザーの情報を取得できる! Terraformを利用している場合には、DataSource “aws_iam_group”を使ってある IAMグループを参照することで、そこに属するIAMユーザー情報をリストの形で得 ることができます。

Slide 6

Slide 6 text

解決策: TerraformのDataSourceを利用 2. DataSourceから取得したユーザー ARNをfor文で取り出す グループに属するユーザー全員 のARNが記載されたポリシード キュメントが生成される 1. IAMグループを参照する DataSourceの作成 IAMグループを参照するDataSourceから得た所属ユーザーARN一覧を、for文で取 り出してAssumePolicyのプリンシパルに指定します。

Slide 7

Slide 7 text

まとめ • AssumeRoleのプリンシパルには、IAMグループを指定できません。 • そのときはリソース管理にTerraformを使っていたため、IAMグループのDataSourceを使って所 属ユーザーARN一覧を取得し、それをプリンシパルに指定する方法で乗り切りました。 • この方法だと、グループに新しくユーザーが追加されても、そのユーザーARNをプリンシパルに 追加するところまで自動化できるのでとても便利でした。 • IaCは単にインフラをコード管理するためのツールではなく「通常通りに書くと面倒な設定を言語 の力で簡潔に表す」というプログラミング言語的な側面もあるので、そこも存分に活用していき ましょう。

Slide 8

Slide 8 text

Thank You ご意見、ご質問ありましたらお気軽にご連絡下さい [email protected] Haruka Sakihara(崎原 晴香)