AWS認定資格 WEB問題集&徹底解説CloudOpsエンジニア アソシエイト(SOA)
AWSサービスの一つであるAWS IAM Access Analyzerはどんな内容なのでしょうか?また、AWS認定資格のSysOpsアドミニストレーター -アソシエイト(SOA)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います
1. サービス概要
AWS IAM Access Analyzerは、IAMの機能群の1つで、AWS環境の権限が「意図した範囲に収まっているか」を自動推論(ロジックベースの推論)で分析し、検出結果(Finding)として示すサービスです。 リソースベースポリシーが組織やアカウントの外へ公開していないか、使われていない権限が残っていないか、これから適用するポリシーが過剰でないかを、継続的またはデプロイ前に確認できます。
現在の機能は大きく、外部アクセス分析・内部アクセス分析・未使用アクセス分析の3種類のアナライザーと、ポリシー検証・カスタムポリシーチェック・ポリシー生成の3つのポリシー支援機能に分かれます。 「最小権限を作る」「最小権限を確かめる」「最小権限を保ち続ける」の各段階に対応する道具をまとめたサービスと捉えると整理しやすくなります。
2. 主な特徴と機能
2.1 外部アクセスアナライザー
アナライザー作成時に、アカウントまたは組織(AWS Organizations)を信頼ゾーン(zone of trust)として指定します。信頼ゾーンの外のプリンシパル(別アカウント、匿名ユーザーなど)にアクセスを許可しているリソースベースポリシーを見つけると、公開アクセスかクロスアカウントアクセスかを区別して検出結果を生成します。 対象はS3バケット、IAMロールの信頼ポリシー、KMSキー、Lambda関数・レイヤー、SQSキュー、SNSトピック、Secrets Managerのシークレット、EBS・RDSのスナップショット、ECRリポジトリ、EFSファイルシステム、DynamoDBのテーブル・ストリームなどです。 ポリシーの追加・変更はおおむね30分以内に再分析され、加えて定期的な全体スキャンも行われます。
2.2 内部アクセスアナライザー
指定した重要リソース(S3バケット、DynamoDBテーブル、RDSスナップショットなど)について、組織・アカウント内のどのIAMユーザー・ロールがアクセスできるかを洗い出します。 外部への共有ではなく、社内の過剰なアクセス経路を見つけるための機能です。
2.3 未使用アクセスアナライザー
組織またはアカウント内のIAMロール・ユーザーを継続的に監視し、使われていないロール、未使用のアクセスキー、未使用のパスワード、さらに使用中のロール・ユーザーに付いている未使用のサービス・アクションの権限を検出結果として示します。 未使用と判断する日数(追跡期間)は設定でき、権限を削るための推奨(どのポリシーからどのアクションを外すか)も提示されます。
2.4 ポリシー検証
IAMポリシーをIAMの文法とAWSのベストプラクティスに照らしてチェックし、セキュリティ警告・エラー・一般的な警告・提案の4種類の結果を返します。IAMコンソールのJSONポリシーエディタで自動的に表示されるほか、ValidatePolicy APIでCI/CDに組み込めます。
例えば、iam:PassRoleを全リソースに許可している、存在しないアクション名を書いている、といった問題を適用前に見つけます。
2.5 カスタムポリシーチェック
自社のセキュリティ基準に照らした判定を自動推論で行う有料のAPIです。
- CheckNoNewAccess: 更新後のポリシーが、既存(または基準)のポリシーより新しいアクセスを許可していないかを判定する。
- CheckAccessNotGranted: 指定した重要なアクションやリソースへのアクセスを許可していないかを判定する。
- CheckNoPublicAccess: リソースポリシーが公開アクセスを許可していないかを判定する。
2.6 ポリシー生成
指定期間のAWS CloudTrailのログから、IAMロール・ユーザーが実際に使ったサービスとアクションを抽出し、それに基づくIAMポリシーの雛形を生成します。 広い権限で一定期間動かしたあとに、実利用に合わせた最小権限ポリシーへ置き換える用途に使います。生成結果はそのまま適用せず、リソースARNの絞り込みなどを確認してから使います。
3. アーキテクチャおよび技術要素
- アカウント単位、または組織の管理アカウント(あるいは委任管理者アカウント)から組織単位でアナライザーを作成する。
- 外部アクセスアナライザーはリージョンごとに動作するため、リソースを使う各リージョンで作成する。未使用アクセスアナライザーの結果はリージョンに依存しないため、全リージョンに作る必要はない。
- アナライザーはポリシーを数学的に分析し、到達可能なアクセスを検出結果として生成する(実際のアクセスログを見るのではなく、ポリシーが「許してしまう」アクセスを網羅的に見つける)。
- 意図した共有はアーカイブルールで自動的にアーカイブし、残った検出結果だけを対処対象にする。
- 検出結果はAmazon EventBridgeのイベントとして送られ、AWS Security Hub CSPMにも統合されるため、通知や自動修復のワークフローにつなげられる。
- ポリシーを直したあとは再スキャンを実行し、検出結果が解決済みになることを確認する。
4. セキュリティと認証・認可
- 委任管理者: 組織全体のアナライザーは、管理アカウントからセキュリティ用のメンバーアカウントを委任管理者に指定して運用するのがベストプラクティス。管理アカウントの利用を最小限にできる。
- サービスリンクロール: Access Analyzerはサービスリンクロールを使って各リソースのポリシーを読み取る。分析のために各リソースへ個別の権限を付ける必要はない。
- アクセスのプレビュー: S3バケットやKMSキーなどのポリシー変更前に、変更後のポリシーで公開・クロスアカウントアクセスが生じるかを確認できる。
- Policy Simulatorとの違い: 「特定のリクエストが許可されるか」を試すのがIAM Policy Simulator、「ポリシーが外部や不要な相手に何を許してしまうか」を網羅的に見つけるのがAccess Analyzer。
- 監査: アナライザーの作成・アーカイブルールの変更などの操作はCloudTrailに記録される。
5. 料金形態
機能ごとに無料と有料が分かれています。試験では「外部アクセス分析とポリシー生成は追加料金なし」という区別が問われやすいポイントです。
- 外部アクセスアナライザー: 追加料金なし。
- ポリシー検証・ポリシー生成: 追加料金なし(ポリシー生成の元になるCloudTrailの証跡やS3の料金は別途)。
- 内部アクセスアナライザー: 監視対象のリソース数(リージョン・月単位)で課金。
- 未使用アクセスアナライザー: 分析対象のIAMロール・ユーザー数(月単位)で課金。複数リージョンに作るとアナライザーごとに課金されるため、通常は1つで足りる。サービスリンクロールは対象外。
- カスタムポリシーチェック: API呼び出し回数で課金。
6. よくあるアーキテクチャ・設計パターン
- 組織全体の外部共有の監視: 委任管理者アカウントで組織を信頼ゾーンとする外部アクセスアナライザーを各リージョンに作成し、検出結果をEventBridge経由でSNSや自動修復Lambdaへ送る。
- 未使用権限の棚卸し: 組織レベルの未使用アクセスアナライザーで、長期間使われていないロールやアクセスキーを洗い出し、無効化・削除する。
- CI/CDでのポリシーゲート: CloudFormationやTerraformのテンプレートに含まれるIAMポリシーを、ValidatePolicyとCheckNoNewAccessでパイプライン内でチェックし、基準を満たさない変更をデプロイ前に止める。
- 実利用に基づく最小権限化: 新規ワークロードは一定期間広めの権限で動かし、CloudTrailからポリシー生成して置き換える。
- 生成AIワークロードの権限管理: 学習データやRAG用コーパスを置くS3バケット、Bedrockを呼び出すロールについて、外部共有と未使用権限を継続的に点検する。
7. 設定・デプロイ手順(ハンズオン例)
- (組織で使う場合)管理アカウントでAccess Analyzerの信頼されたアクセスを有効化し、セキュリティアカウントを委任管理者に登録する。
- IAMコンソールの「Access Analyzer」から、信頼ゾーンを組織(またはアカウント)とする外部アクセスアナライザーを、利用中の各リージョンで作成する。
- 検出結果を確認し、意図した共有(例: ログ集約アカウントへの共有)はアーカイブルールで自動アーカイブする。
- 意図しない公開・共有はバケットポリシーやロールの信頼ポリシーを修正し、再スキャンで解決を確認する。
- 未使用アクセスアナライザーを作成し、追跡期間(例: 90日)を設定して未使用のロール・キー・権限を確認する。
- IAMロールの詳細画面から「ポリシーの生成」を実行し、CloudTrailの証跡と期間を指定して最小権限ポリシーを作成する。
- 検出結果のEventBridgeルールを作成し、SNSやチャット通知、自動修復につなげる。
8. 試験で問われやすいポイント
8.1 外部アクセスの検出
- Q: 別アカウントや外部エンティティと共有されているS3バケット・IAMロール・KMSキーを特定するには?
A: IAM Access Analyzerの外部アクセスアナライザーを作成し、信頼ゾーン外へのアクセスを検出結果として確認する。 - Q: 組織内の共有は問題にせず、組織外への共有だけを検出したい場合は?
A: 組織を信頼ゾーンとするアナライザーを、管理アカウントまたは委任管理者アカウントで作成する。 - Q: 複数リージョンのリソースを監視するには?
A: 外部アクセスアナライザーはリージョン単位なので、リソースがある各リージョンで作成する。 - Q: 意図的な共有の検出結果を毎回確認したくない場合は?
A: アーカイブルールで条件に一致する検出結果を自動的にアーカイブする。
8.2 最小権限の実現
- Q: ロールが実際に使った操作だけを許可するポリシーを作りたい場合は?
A: CloudTrailのアクティビティに基づくAccess Analyzerのポリシー生成を使う。 - Q: 長期間使われていないIAMロールやアクセスキー、未使用のアクションを組織全体で見つけるには?
A: 委任管理者アカウントで組織を対象とする未使用アクセスアナライザーを作成する。 - Q: ポリシー更新で権限が広がっていないことをデプロイ前に自動チェックするには?
A: カスタムポリシーチェックのCheckNoNewAccessをCI/CDに組み込む。特定の危険なアクションの許可を禁じたい場合はCheckAccessNotGranted。
8.3 トラブルシューティングと監査
- Q: ポリシーの文法誤りやベストプラクティス違反を作成時に見つけるには?
A: Access Analyzerのポリシー検証(ValidatePolicy)を使う。 - Q: 特定のユーザーが特定のAPIを呼べるかを試したい場合は?
A: IAM Policy Simulatorを使う。拒否された実際の呼び出しの調査はCloudTrailで行う。Access Analyzerは許可範囲の網羅的な分析に使う。 - Q: 検出結果を自動で通知・修復したい場合は?
A: Access Analyzerの検出結果イベントをEventBridgeで受け、SNSやLambdaにつなぐ。Security Hub CSPMでの一元管理も可能。
8.4 料金
- Q: 外部アクセス分析とポリシー生成に追加料金はかかる?
A: かからない。未使用アクセス分析・内部アクセス分析・カスタムポリシーチェックは有料。