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

Ops-JAWS_Organizations小ネタ3選.pdf

 Ops-JAWS_Organizations小ネタ3選.pdf

Shuichi Takahashi

April 16, 2025
Tweet

Other Decks in Technology

Transcript

  1. Ops-JAWS Meetup 34 Organizations & Control Tower 2025/04/16 コスト、カオス、権限 AWS

    Organizations 小ネタ3選 アイレット株式会社 クラウドインテグレーション事業部 高橋 修一
  2. Role 各種業務の自動化・効率化 お客さま向けプラン建て付け(請求代行+AWS Organizations) ・2024 Japan AWS Ambassadors ・2024 iret

    テクニカルアンバサダー Location 大阪府大阪市 在住 月1〜2くらい東京 Personal 京都府京都市 出身 趣味 ・🎮 ゲーム ・🥊 キックボクシング( アマチュア戦績 3勝1敗 ) 高橋 修一 Shuichi Takahashi 自己紹介 2 アイレット株式会社 クラウドインテグレーション事業部 MSP開発セクション セクションリーダー @shu85t @shu85t
  3. ログアーカイブアカウント AWS Cost Categories with OU OrganizationsのOU階層でコスト可視化したい。ただ手動で登録はしんどい。 6 1. OU単位でコスト分析

    Root Tool SDLC Security 監査アカウント Dev Stg サービスA 開発アカウント ? 利用できるディメンション ・アカウント ・料金タイプ ・リージョン ・サービス ・コスト配分タグ ・使用タイプ ・請求エンティティ
  4. { "Name": "OU階層", "RuleVersion": "CostCategoryExpression.v1", "Rules": [ { "Value": "Security",

    "Rule": { "Dimensions": { "Key": "LINKED_ACCOUNT", "Values": ["1111...", "2222..."], "MatchOptions": ["EQUALS"] }}}, // ... Other OUs ... ]} やったこと OUとアカウントの構造を読み取り、コストカテゴリ定義に変換して登録するスクリプト作成 7 1. OU単位でコスト分析 ① OU構造の取得 ③ 登録/更新 ②カテゴリ定義に変換 ?
  5. やること 「実験対象アカウント」 を 「権限を奪う SCP」をアタッチした「観察用OU」に移動させ、ワークロードの挙動を観察 11 2. SCPでお手軽 カオスエンジニアリング 通常OU

    観察用OU ①権限を奪う SCP をアタッチ ② 観察用OU配下に移動 ③ ワークロードの挙動を観察 ④ 通常OU配下に戻す 実験対象アカウント Root
  6. 権限を奪う SCP 13 2. SCPでお手軽 カオスエンジニアリング { "Version": "2012-10-17", "Statement":

    [ { "Sid": "Statement1", "Effect": "Deny", "Action": [ "SNS:*", "SES:*", "S3:*", "Lambda:*", "Dynamodb:*", "SQS:*" ], "Resource": "*" } ] } 使っているサーバレスの権限周りを全て奪う
  7. メール処理ワークロード 14 2. SCPでお手軽 カオスエンジニアリング 権限を奪う SCP VS { "Version":

    "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Deny", "Action": [ "SNS:*", "SES:*", "S3:*", "Lambda:*", "Dynamodb:*", "SQS:*" ], "Resource": "*" } ] } ヒント: SCPの影響範囲は IAM ユーザーとロールのみ
  8. [ERROR] ClientError: An error occurred (AccessDenied) when calling the GetObject

    operation: Access Denied Traceback (most recent call last): 「③変換処理のLambda」でメール生データを readしにいくところでコケました ・①SES -> ②SNS -> ③Lambda の呼び出しまではイベントによって繋いでいるのでIAM権限は利用しない ・③のLambdaは実行ロール(IAMロール)から引き継いだ認証情報を使ってS3から生データをreadするので、ここで失敗。 (「S3:*」 をDenyしているのでそこでひっかかった) 結果 15 2. SCPでお手軽 カオスエンジニアリング ・外側から異常を注入できる ・制約はあるが条件指定でフローの一部を狙い撃ちできそう ・RCPや宣言型ポリシーつけてみて観察すると? ・操作誤りには注意!(移動先まちがえ)
  9. 18 3. 管理アカウント上の権限抑制 ✅ iam:CreateRole ✅ ーーーーーー ❌ ーーーーーー ❌

    ーーーーーー ✅ ーーーーーー ✅ ーーーーーー ✅ ーーーーーー ✅ ーーーーーー CreateRole 管理アカウント上にソリューションを構築するため IAMロール作成の権限は渡したいが 制限のないロールを作成されたくない (トンビが鷹を産んでほしくない )
  10. メンバーアカウントでも使えるテクニックですが 不便さを感じることもある制限 後から PermissionBoundaryを 削除/更新されないよう Deny 19 3. 管理アカウント上の権限抑制 ✅

    ーーーーーー ✅ ーーーーーー ✅ ーーーーーー ✅ ーーーーーー ⛓ Permission Boundary ❌ ーーーーーー ❌ ーーーーーー ❌ Delete/Put Permission Boundary CreateRole ✅ iam:CreateRole +condition: Permission Boundary ✅ ーーーーーー ❌ ーーーーーー ❌ ーーーーーー ❌ Delete/Put Permission Boundary 指定PermissionBoundary付きなら 作成可能 管理アカウント上にソリューションを構築するため IAMロール作成の権限は渡したいが 制限のないロールを作成されたくない (トンビが鷹を産んでほしくない )    → iam:CreateRoleの条件で「 Permissions Boundary」付きにする
  11. 20