IAM Access Analyzer で検出する過剰なアクセス権限 - 外部アクセスと未使用権限の分析

IAM ロールの未使用権限を CloudTrail ベースで検出し、最小権限ポリシーを自動生成する。外部アクセスの検出と CI/CD へのカスタムポリシーチェック組み込みまでを解説します。

Access Analyzer の概要

IAM Access Analyzer は 2 種類のアナライザーでアクセス権限の問題を検出するサービスです。外部アクセスアナライザーは、S3 バケットや IAM ロールなどのリソースポリシーを分析し、組織外のアカウントやパブリックからアクセス可能な設定を特定します。未使用アクセスアナライザーは、CloudTrail のアクティビティログと IAM ロールの権限を照合し、実際に使われていない権限を検出します。さらに、CloudTrail の過去のアクティビティに基づいて最小権限の IAM ポリシーを自動生成する機能と、CI/CD パイプラインに組み込むカスタムポリシーチェック機能も提供します。

未使用権限とポリシー生成

未使用アクセスアナライザーは IAM ロールとユーザーの権限を CloudTrail のアクティビティと照合し、90 日以上使用されていないアクション、未使用のアクセスキー、未使用のロールを検出します。90 日という期間はデフォルト値で、四半期に一度しか実行しないバッチ処理などを誤検出しないよう、分析対象期間を考慮した運用が必要です。ポリシー生成は CloudTrail の過去 90 日間のアクティビティに基づいて、実際に使用されたアクションのみを含む最小権限の IAM ポリシーを自動生成します。生成されたポリシーはそのまま適用するのではなく、将来必要になるアクションが含まれているかをレビューしてから適用します。カスタムポリシーチェックは CI/CD パイプラインに組み込み、IAM ポリシーの変更が特定のアクション (s3:* や iam:*) を許可しないことを自動検証します。CodePipeline のステージに Lambda 関数を配置し、CheckNoNewAccess API でポリシー変更の安全性を検証するパターンが一般的です。

外部アクセス検出の活用

外部アクセスアナライザーは S3 バケットポリシー、 IAM ロールの信頼ポリシー、 KMS キーポリシー、 Lambda 関数ポリシー、 SQS キューポリシーを分析し、外部のアカウントやパブリックからアクセス可能なリソースを検出します。検出結果はアーカイブ (意図的な共有) またはアクティブ (要対応) に分類し、意図しない外部公開を優先的に修正します。カスタムポリシーチェックで、ポリシーの変更が新たな外部アクセスを許可しないことを CI/CD パイプラインで自動検証できます。 Organizations との統合で全アカウントの外部アクセスを一元管理し、組織全体のセキュリティ態勢を可視化します。 IAM セキュリティの理解をさらに深めたい場合はAmazon の専門書も活用できます。

Access Analyzer の料金

外部アクセスアナライザーは無料で利用できます。未使用アクセスアナライザーは分析対象の IAM ロールとユーザー数に基づいて課金され、1 ロール/ユーザーあたり月額約 0.20 ドルです。カスタムポリシーチェックは 1 チェックあたり約 0.002 ドルです。未使用アクセスアナライザーは IAM エンティティ数が多い大規模環境ではコストが積み上がるため、重要なアカウントから段階的に有効化することを推奨します。外部アクセスアナライザーは全アカウントで無料で有効化でき、セキュリティのベースラインとして必須です。

まとめ

Access Analyzer は外部アクセスと未使用権限の検出で最小権限の原則を実現するサービスです。CloudTrail のアクティビティに基づくポリシー自動生成で適切な権限を効率的に設定し、カスタムポリシーチェックで CI/CD パイプラインにセキュリティ検証を組み込むことで、権限管理のライフサイクル全体を自動化します。