IAM Access Analyzerの有効化について

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、「どうやって直すのか?」 という具体的な修復手順(コンソール、AWS CLI、Terraformなど)まで、分かりやすく解説します。
この記事では、IAM Access Analyzerの有効化手順について解説します。

概要
IAM Access Analyzerは、IAMロールやIAMユーザーに意図しない過剰な権限が付与されていないかを分析し、セキュリティリスクを低減するための重要なサービスです。一部のリージョンでAccess Analyzerが有効化されていない場合、以下のようなリスクが発生します。
- 意図しない権限の放置: 有効化されていないリージョンに存在するIAMロールやユーザーに、意図せず広範な権限が付与されたままになる可能性があります。これにより、セキュリティ侵害のリスクが高まります。
- 最小権限の原則からの逸脱: Access Analyzerによる継続的な分析が行われないため、最小権限の原則に沿ったIAMポリシーの適用が困難になり、不要な権限が付与された状態が維持される可能性があります。
- セキュリティインシデントの早期発見の遅れ: 過剰な権限を持つIAMエンティティが悪用された場合でも、Access Analyzerが無効化されているリージョンでは、その活動を早期に検知することが難しくなる可能性があります。
- 監査とコンプライアンスへの影響: セキュリティ体制の監査やコンプライアンス要件への対応において、すべてのリージョンで一貫したセキュリティ監視体制が求められる場合、Access Analyzerの未有効化は問題となる可能性があります。
対策: IAM Access AnalyzerをすべてのAWSリージョンで有効化し、一元的な権限分析と監視体制を確立することが重要です。
- 各リージョンでの有効化: AWSコンソールまたはAWS CLI/SDKを使用して、すべてのAWSリージョンでIAM Access Analyzerを有効化します。
- 組織全体での有効化 (AWS Organizations): AWS Organizationsを使用している場合は、組織全体でIAM Access Analyzerを一括して有効化することを検討します。これにより、新しいアカウントやリージョンが追加された際にも自動的にAccess Analyzerが有効になり、管理の負担を軽減できます。
- 継続的な確認と監視: Access Analyzerがすべてのリージョンで有効になっている状態を維持するために、定期的に設定状況を確認します。
- 検出結果のレビューと対応: Access Analyzerによって検出された意図しない権限に関する調査結果を定期的にレビューし、適切な対応(ポリシーの修正、権限の削除など)を実施します。
修復方法
AWSコンソールを用いて、IAM Access Analyzerが有効化されていないリージョンで有効化します。
- AWSコンソールにログインします。
- リージョンピッカー(画面右上)で、Access Analyzerが有効化されていないリージョンを選択します。
- ナビゲーションペインから IAM を選択します。
- 左側のメニューから Access Analyzer を選択します。
- Access Analyzerがまだ有効化されていない場合、「アナライザーを作成」をクリックします。
- 作成するアナライザー名を確認し、問題なければ「アナライザーを作成」をクリックします。
- 必要に応じて、信頼ゾーン(組織IDやアカウントID)を設定し、Access Analyzerを開始 を再度クリックします。
- 上記の手順を、Access Analyzerを有効化したいすべてのAWSリージョンで繰り返します。

Terraformでの修復手順
TerraformでIAM Access Analyzerを有効化するには、aws_iam_access_analyzer
リソースを使用します。すべてのリージョンで有効化するには、各リージョンに対応するプロバイダー設定を行い、それぞれのリージョンで aws_iam_access_analyzer
リソースを作成する必要があります。
# us-east-1 リージョンで Access Analyzer を有効化
provider "aws" {
region = "us-east-1"
alias = "us-east-1"
}
resource "aws_iam_access_analyzer" "us_east_1" {
provider = aws.us_east_1
analyzer_name = "default" # Analyzer名はリージョン内で一意である必要があります
}
# us-west-2 リージョンで Access Analyzer を有効化
provider "aws" {
region = "us-west-2"
alias = "us-west-2"
}
resource "aws_iam_access_analyzer" "us_west_2" {
provider = aws.us_west_2
analyzer_name = "default"
}
# その他のリージョンについても同様に設定を追加します
上記の例では、us-east-1
と us-west-2
の2つのリージョンでIAM Access Analyzerを有効化しています。他のリージョンについても同様に provider
と aws_iam_access_analyzer
リソースを定義する必要があります。
AWS Organizationsを使用している場合は、aws_organizations_organization
データソースを利用して組織IDを取得し、aws_iam_access_analyzer
リソースの type
を "ORGANIZATION"
に設定することで、組織全体でAccess Analyzerを有効化できます。ただし、Terraformで組織全体の設定を行うには、適切な権限が必要です。
data "aws_organizations_organization" "org" {}
resource "aws_iam_access_analyzer" "organization_analyzer" {
type = "ORGANIZATION"
analyzer_name = "organization-analyzer"
organization_arn = data.aws_organizations_organization.org.arn
}
最後に
今回は、IAM Access Analyzerが一部のリージョンで有効化されていないことによるセキュリティリスクと、すべてのリージョンで有効化するための対策について解説しました。IAM Access Analyzerは、意図しない権限の付与を防ぎ、最小権限の原則を遵守するために不可欠なサービスです。すべてのリージョンで有効化し、AWS環境全体のセキュリティ体制を強化しましょう。
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。
運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。
最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。