Slide 1

Slide 1 text

IAM Access Analyzer を利用した 最小権限への旅

Slide 2

Slide 2 text

粟ケ窪 康平 2020年に某大手証券グループのシンクタンクに新卒入社。 配属から1年はオンプレネットワークの設計をやっていたが、 ひょんなことから社内初のAWS全冠になってしまいネットワーク から引退。 現在は某金融機関様向けのAWSセキュリティ設計に従事。 CISSP(Associate)/SC/NW/CCNA あわ が くぼ

Slide 3

Slide 3 text

おことわり 本資料の内容や見解は所属の組織を代表するものではございません

Slide 4

Slide 4 text

本日話さないこと 最小権限とは何かという哲学的な問い IAMポリシー/ロールの基本

Slide 5

Slide 5 text

IAM Access Analyzer とは IAM Access Analyzer を利用した最小権限への旅

Slide 6

Slide 6 text

リソースポリシーを分析して証明可能なセキュリティを提供することで、最小特権のアク セス権限を簡単に実装できるようにするとともに、 意図しないパブリックアクセスまたはクロスアカウントアクセスを特定するためのサービス IAM Access Analyzer を利用した最小権限への旅 IAM Access Analyzer とは

Slide 7

Slide 7 text

IAM Access Analyzer は特に機能拡張が激しいサービスのひとつ IAM Access Analyzer を利用した最小権限への旅 2019 2021 2023 2020 2022 IAM Access Analyzer の進化 ➢ re:Inventで発表 ➢ Access Analyzer for Amazon S3 ➢ Security Hub と統合 ➢ S3アクセスポイントポリシーの公開アクセス許可の検 出をサポート ➢ IAM Access Analyzer が既存の調査結果のアー カイブルールをサポート ➢ Secrets Manager への意図しないアクセスの検出 をサポート ➢ アクセス権限変更前のパブリックアクセスとクロスアカウ ントアクセスを検証可能に ➢ 100を超えるサービスでポリシーチェックのサポート ➢ アクセスアクティビティに基づくポリシー生成をサポート ➢ オーサリング中のポリシーチェックをサポート ➢ ポリシー生成対象サービスの強化、クオータ引き上げ ➢ ポリシー検証がロール信頼ポリシーまで拡張 ➢ 140を超えるサービスでアクティビティに基づくポリシー 生成が可能に ➢ SNSなど6つのサービスが公開アクセス検出の対象に 追加 ➢ 200を超えるサービスでアクティビティに基づく ポリシー生成が可能に

Slide 8

Slide 8 text

IAM Access Analyzer を利用した最小権限への旅 権限の設定 権限の確認 権限の修正 IAM Access Analyzer でできること IAM Access Analyzer は 権限管理ライフサイクルのあらゆるステージを支える各種機能を提供

Slide 9

Slide 9 text

IAM Access Analyzer を利用した最小権限への旅 権限の設定 権限の確認 権限の修正 IAM Access Analyzer でできること IAM Access Analyzer は 権限管理ライフサイクルのあらゆるステージを支える各種機能を提供 ステージカットで機能をご紹介します

Slide 10

Slide 10 text

IAM Access Analyzer を利用した最小権限への旅 権限の確認 権限の修正 IAM Access Analyzer でできること IAM Access Analyzer は 権限管理ライフサイクルのあらゆるステージを支える各種機能を提供 権限の設定 権限を 正しく 設定するための機能

Slide 11

Slide 11 text

IAM Access Analyzer policy validation IAMをポリシーの文法およびベストプラクティスに照らして検証 権限の設定 IAM Access Analyzer を利用した最小権限への旅 文法的な誤りを指摘 過度に広いアクセス権限を指摘 ベストプラクティスに沿っていないポリシーを指摘 改善のための推奨事項 Security Errors Warnings Suggestions

Slide 12

Slide 12 text

IAM Access Analyzer を利用した最小権限への旅 権限の修正 IAM Access Analyzer でできること IAM Access Analyzer は 権限管理ライフサイクルのあらゆるステージを支える各種機能を提供 権限の設定 権限の確認 過剰な権限 が設定されていないか確認するための機能

Slide 13

Slide 13 text

IAM Access Analyzer external access findings 外部エンティティと共有されている組織とアカウントのリソースを識別 権限の確認 IAM Access Analyzer を利用した最小権限への旅 外部公開している(されている) S3バケットを一覧表示した例

Slide 14

Slide 14 text

IAM Access Analyzer を利用した最小権限への旅 IAM Access Analyzer でできること IAM Access Analyzer は 権限管理ライフサイクルのあらゆるステージを支える各種機能を提供 権限の設定 権限の確認 権限の修正 過剰な権限を削除し 洗練 させるための機能

Slide 15

Slide 15 text

IAM Last accessed information(1/2) 最後にアクセスされた情報をもとに不要なアクセス許可の特定を支援 IAM Access Analyzer を利用した最小権限への旅 最大400日間の アクセス情報を追跡 権限の修正

Slide 16

Slide 16 text

IAM Last accessed information(1/2) 最後にアクセスされた情報をもとに不要なアクセス許可の特定を支援 IAM Access Analyzer を利用した最小権限への旅 最大400日間の アクセス情報を追跡 追跡期間中は アクセスされていない 権限の修正

Slide 17

Slide 17 text

IAM Last accessed information(1/2) 最後にアクセスされた情報をもとに不要なアクセス許可の特定を支援 IAM Access Analyzer を利用した最小権限への旅 最大400日間の アクセス情報を追跡 追跡期間中は アクセスされていない 不要なサービス許可 権限の修正

Slide 18

Slide 18 text

IAM Last accessed information(2/2) サービスのリンクを押すとアクションレベルまで確認可能 IAM Access Analyzer を利用した最小権限への旅 S3のアクションレベルの アクセス情報の例 フィルタを使うと 不要アクションの見通しがよくなる 権限の修正

Slide 19

Slide 19 text

IAM Access Analyzer policy generation CloudTrailログを分析し、ポリシー生成を支援 IAM Access Analyzer を利用した最小権限への旅 期間を選択(最長90日) リージョンを選択 サービスロールを設定 権限の修正

Slide 20

Slide 20 text

IAM Access Analyzer を利用した最小権限への旅 権限の設定 権限の確認 権限の修正 IAM Access Analyzer でできること IAM Access Analyzer は 権限管理ライフサイクルのあらゆるステージを支える各種機能を提供 再掲 ✓ IAM Access Analyzer policy validation ✓ IAM Access Analyzer external access findings ✓ IAM Last Accessed information ✓ IAM Access Analyzer policy generation

Slide 21

Slide 21 text

IAM Access Analyzer を利用した最小権限への旅 権限の設定 権限の確認 権限の修正 IAM Access Analyzer でできること IAM Access Analyzer は 権限管理ライフサイクルのあらゆるステージを支える各種機能を提供 再掲 ✓ IAM Access Analyzer policy validation ✓ IAM Access Analyzer external access findings ✓ IAM Last Accessed information ✓ IAM Access Analyzer policy generation 銀の弾丸というわけにはいかなかった

Slide 22

Slide 22 text

IAM Access Analyzer の悩み 大きく2点悩ましいところがあった IAM Access Analyzer を利用した最小権限への旅 公開アクセスの検知結果が多すぎて どこから手を付ければいいかわからない コードで展開するIAMリソースの 事前検証ができない 個人的に

Slide 23

Slide 23 text

IAM Access Analyzer の悩み 大きく2点悩ましいところがあった IAM Access Analyzer を利用した最小権限への旅 コードで展開するIAMリソースの 事前検証ができない 個人的に 公開アクセスの検知結果が多すぎて どこから手を付ければいいかわからない

Slide 24

Slide 24 text

IAM Access Analyzer 検出結果におけるノイズ 環境の規模が大きいほど多数のノイズが含まれる IAM Access Analyzer を利用した最小権限への旅 このS3バケットは 公開されていていいのか? 謎のエラー フェデレーションユーザー の検出結果がいっぱい

Slide 25

Slide 25 text

IAM Access Analyzer 検出結果におけるノイズの軽減 AWSから検出結果に優先順位をつけるための以下の指針が示されている IAM Access Analyzer を利用した最小権限への旅 1. パブリックアクセスに関する調査結果を確認する 2. 権限エラーを削除してフィルタリングする 3. 既知の ID プロバイダーのフィルター 4. 信頼できるクロスアカウントアクセスの検出結果をフィルタリングする

Slide 26

Slide 26 text

1. パブリックアクセスに関する調査結果を確認する IAM Access Analyzer を利用した最小権限への旅 IAM Access Analyzer は以下のようなリソースの外部公開を検知する ✓ 「Principal:*」権限があるS3バケットポリシー ✓ リソース許可フラグが設定されたEBSスナップショット

Slide 27

Slide 27 text

IAM Access Analyzer を利用した最小権限への旅 IAM Access Analyzer は以下のようなリソースの外部公開を検知する ✓ 「Principal:*」権限があるS3バケットポリシー ✓ リソース許可フラグが設定されたEBSスナップショット 公開が意図したものであるならばアーカイブする 1. パブリックアクセスに関する調査結果を確認する

Slide 28

Slide 28 text

IAM Access Analyzer を利用した最小権限への旅 IAM Access Analyzer は以下のようなリソースの外部公開を検知する ✓ 「Principal:*」権限があるS3バケットポリシー ✓ リソース許可フラグが設定されたEBSスナップショット 意図した公開の場合 リソース名等を条件 にしてアーカイブ 1. パブリックアクセスに関する調査結果を確認する

Slide 29

Slide 29 text

IAM Access Analyzer を利用した最小権限への旅 IAM Access Analyzer は以下のようなリソースの外部公開を検知する ✓ 「Principal:*」権限があるS3バケットポリシー ✓ リソース許可フラグが設定されたEBSスナップショット 意図した公開の場合 公開を意図していないなら是正する リソース名等を条件 にしてアーカイブ 1. パブリックアクセスに関する調査結果を確認する

Slide 30

Slide 30 text

IAM Access Analyzer を利用した最小権限への旅 IAM Access Analyzer は以下のようなリソースの外部公開を検知する ✓ 「Princial:*」権限があるS3バケットポリシー ✓ リソース許可フラグが設定されたEBSスナップショット 意図した公開の場合 意図していない公開の場合 1. パブリックアクセスに関する調査結果を確認する PrincipalOrgID 等でポリシーを是正 リソース名等を条件 にしてアーカイブ

Slide 31

Slide 31 text

IAM Access Analyzer を利用した最小権限への旅 IAM Access Analyzer はサービスにリンクされたロールを利用するが、リソース側で明 示的な拒否を行っているとリソースメタデータを読み取れないことがある 2. 権限エラーを削除してフィルタリングする { "Sid":"Deny unintended access to KMS key", "Effect":"Deny", "Principal":"*", "Action":[ "kms:DescribeKey", "kms:GetKeyPolicy", "kms:List*" ], "Resource":"*", "Condition":{ "ArnNotLikeIfExists":{ "aws:PrincipalArn":[ "arn:aws:iam:::role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer", "arn:aws:iam::*:role/" ] } } } 拒否の例外条件に サービスにリンクされたロールを追加

Slide 32

Slide 32 text

3. 既知のIDプロバイダーのフィルター IAM Access Analyzer を利用した最小権限への旅 IAM Access Analyzer は IAM Identity Center 等のIdPをプリンシパルとして許 可する信頼ポリシーを持つロールを検知してしまう Control Tower を 展開した時の検知例 アカウントが増えるごとに 検出結果も増えていく

Slide 33

Slide 33 text

IAM Access Analyzer を利用した最小権限への旅 IAM Access Analyzer は IAM Identity Center 等のIdPをプリンシパルとして許 可する信頼ポリシーを持つロールを検知してしまう Control Tower を 展開した時の検知例 アカウントが増えるごとに 検出結果も増えていく IAM Identity Center の予約パスを使用して アーカイブルールを作成する 3. 既知のIDプロバイダーのフィルター

Slide 34

Slide 34 text

IAM Access Analyzer を利用した最小権限への旅 IAM Identity Center によって作成されたロールは、以下の予約パスを利用する 「arn:aws:iam:: :role/aws-reserved/sso.amazonaws.com/」 Federated User を saml-provider/AWSSSO Resource を aws-reserved/sso.amazonaws.com 3. 既知のIDプロバイダーのフィルター

Slide 35

Slide 35 text

4. 信頼できるクロスアカウントアクセスの検出結果をフィルタリングする IAM Access Analyzer を利用した最小権限への旅 IAM Access Analyzer はリソースベースのポリシーが信頼ゾーン外からのクロスアカウ ントアクセスを許可している場合に検知する アカウントID等で アーカイブルールを作成する

Slide 36

Slide 36 text

IAM Access Analyzer の悩み 大きく2点悩ましいところがあった IAM Access Analyzer を利用した最小権限への旅 個人的に 公開アクセスの検知結果が多すぎて どこから手を付ければいいかわからない コードで展開するIAMリソースの 事前検証ができない

Slide 37

Slide 37 text

IAM Policy Validator for AWS CloudFormation の利用 IAM Access Analyzer を利用した最小権限への旅 CI/CDパイプラインにPolicy Validator を組み込むことで展開前に事前検証が可能 https://catalog.us-east-1.prod.workshops.aws/v2/workshops/fff8e490-f397-43d2-ae26-737a6dc4ac68/en-US ワークショップが 用意されている https://github.com/awslabs/terraform-iam-policy-validator Terraform用Validatorも 用意されている

Slide 38

Slide 38 text

最小権限への旅のはじめ方 IAM Access Analyzer を利用した最小権限への旅

Slide 39

Slide 39 text

IAM Access Analyzer とセキュリティ成熟度モデル IAM Access Analyzer の段階的活用にあたって、 セキュリティ成熟度モデルを一つの拠り所にすることができる IAM Access Analyzer を利用した最小権限への旅 https://maturitymodel.security.aws.dev/en/

Slide 40

Slide 40 text

IAM Access Analyzer とセキュリティ成熟度モデル IAM Access Analyzer の段階的活用にあたって、 セキュリティ成熟度モデルを一つの拠り所にすることができる IAM Access Analyzer を利用した最小権限への旅 https://maturitymodel.security.aws.dev/en/ 4段階の成熟度レベル

Slide 41

Slide 41 text

IAM Access Analyzer とセキュリティ成熟度モデル IAM Access Analyzer の段階的活用にあたって、 セキュリティ成熟度モデルを一つの拠り所にすることができる IAM Access Analyzer を利用した最小権限への旅 https://maturitymodel.security.aws.dev/en/ セキュリティ推奨事項の 優先順位付けに役立つ

Slide 42

Slide 42 text

IAM Access Analyzer とセキュリティ成熟度モデル IAM Access Analyzer の段階的活用にあたって、 セキュリティ成熟度モデルを一つの拠り所にすることができる IAM Access Analyzer を利用した最小権限への旅 https://maturitymodel.security.aws.dev/en/ 費用対効果を考慮して 各推奨事項を分類

Slide 43

Slide 43 text

IAM Access Analyzer とセキュリティ成熟度モデル IAM Access Analyzer の段階的活用にあたって、 セキュリティ成熟度モデルを一つの拠り所にすることができる IAM Access Analyzer を利用した最小権限への旅 https://maturitymodel.security.aws.dev/en/ AWSの公式ドキュメント ではない旨の注意書き

Slide 44

Slide 44 text

IAM Access Analyzer とセキュリティ成熟度モデル IAM Access Analyzer に関連する部分を抜粋すると以下のようになる IAM Access Analyzer を利用した最小権限への旅 1. Quick Wins(即効性) ✓ IAM Access Analyzer を使用して、アカウントまたは組織の外部で共有されているリ ソースを検出 2. Foundational(基礎) ⁻ 該当なし 3. Efficient(効率化) ✓ IAMポリシーのレビュー(機能の実行に必要な最小限の権限が付与) ✓ 意図しないアクセスの審査(ポリシー内のアスタリスク確認) ✓ IAM Access Advisor(未使用の許可設定の削除) ✓ IAM Access Analyzer を利用したポリシーの生成 4. Optimized(最適化) ✓ IAMパイプライン

Slide 45

Slide 45 text

IAM Access Analyzer を利用した最小権限への旅 参考文献 ➢ https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/what-is-access-analyzer.html ➢ https://aws.amazon.com/jp/blogs/security/validate-iam-policies-in-cloudformation-templates-using-iam-access- analyzer/ ➢ https://github.com/awslabs/terraform-iam-policy-validator ➢ https://aws.amazon.com/jp/blogs/security/refine-permissions-for-externally-accessible-roles-using-iam-access- analyzer-and-iam-action-last-accessed/ ➢ https://maturitymodel.security.aws.dev/en/model/ ➢ https://catalog.us-east-1.prod.workshops.aws/v2/workshops/fff8e490-f397-43d2-ae26-737a6dc4ac68/en-US ➢ https://d1.awsstatic.com/events/Summits/awsreinforce2023/IAM321_Move-toward-least-privilege-with-IAM- Access-Analyzer.pdf

Slide 46

Slide 46 text

ありがとうございました!