Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AssumePolicyの意外なハマりどころ

 AssumePolicyの意外なハマりどころ

22/3/14 JAWS-UG朝会 #31にて発表

5f0f8883d90b46e581fe41ba9ae4cfe9?s=128

Haruka Sakihara

March 15, 2022
Tweet

Other Decks in Technology

Transcript

  1. 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.
  2. 自己紹介 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.
  3. 今回実現したいこと とあるAssumeRoleの権限移譲先として、「あるグループに属している IAMユーザー全員」を指定したいというケースを考えます。 Users IAM User Group Assume Policy

  4. 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のプリンシパルに指定することは できません。
  5. 解決策: TerraformのDataSourceを利用 出典: Terraform公式ドキュメント - provider/aws Data Source: aws_iam_group data.aws_iam_group.example.usersで所属ユー

    ザーの情報を取得できる! Terraformを利用している場合には、DataSource “aws_iam_group”を使ってある IAMグループを参照することで、そこに属するIAMユーザー情報をリストの形で得 ることができます。
  6. 解決策: TerraformのDataSourceを利用 2. DataSourceから取得したユーザー ARNをfor文で取り出す グループに属するユーザー全員 のARNが記載されたポリシード キュメントが生成される 1. IAMグループを参照する

    DataSourceの作成 IAMグループを参照するDataSourceから得た所属ユーザーARN一覧を、for文で取 り出してAssumePolicyのプリンシパルに指定します。
  7. まとめ • AssumeRoleのプリンシパルには、IAMグループを指定できません。 • そのときはリソース管理にTerraformを使っていたため、IAMグループのDataSourceを使って所 属ユーザーARN一覧を取得し、それをプリンシパルに指定する方法で乗り切りました。 • この方法だと、グループに新しくユーザーが追加されても、そのユーザーARNをプリンシパルに 追加するところまで自動化できるのでとても便利でした。 •

    IaCは単にインフラをコード管理するためのツールではなく「通常通りに書くと面倒な設定を言語 の力で簡潔に表す」というプログラミング言語的な側面もあるので、そこも存分に活用していき ましょう。
  8. Thank You ご意見、ご質問ありましたらお気軽にご連絡下さい haruka.sakihara@accenture.com Haruka Sakihara(崎原 晴香)