Organizations環境におけるAWS Security Hubコントロール「[IAM.28]IAM Access Analyzer external access analyzer should be enabled」の動作と対応
AWS Security Hubコントロール「[IAM.28]IAM Access Analyzer external access analyzer should be enabled」は、 IAM Access Analyzer 外部アクセスアナライザーが有効になっているかチェックします。
IAM Access AnalyzerのアナライザーはOrganizations単位で作成することが可能です。(信頼ゾーン: 現在の組織)
メンバーアカウント側でアナライザーを作成せずに、委任アカウントでOrganzations単位でアナライザーを作成した環境で、メンバーアカウント側AWS Security Hubの該当コントロールのステータスが成功になるか気になったため、検証してみました。
結論
結果は以下でした。
アカウント | コントロールステータス |
---|---|
IAM Access Analyzer委任アカウント | 成功 |
メンバーアカウント | 失敗 |
以下動作のため、メンバーアカウントではコントロールステータスが失敗になりました。
- [IAM.28]はアカウント内にIAM Access Analyzerの外部アクセスアナライザーが存在するかチェックする
- Organizations単位で有効化時に、メンバーアカウントにIAM Access Analyzerの外部アクセスアナライザーは作成されない(アカウント個別に、アカウント単位のアナライザーを作成することは可能)
やってみた
委任設定が完了している前提の手順となっています。
委任設定を未実施の場合は、以下で実施いただくか、IAM Access Analyzer委任アカウントを管理アカウントに読み替えてください。
(IAM Access Analyzer委任アカウント・メンバーアカウント)AWS SecurityHub該当のコントロールを有効化する
IAM.28は現時点では、現時点では以下のセキュリティ標準に含まれます。
CIS AWS Foundations Benchmark v3.0.0/1.20
該当のセキュリティ標準を有効化して、コントロールを有効化します。(以下では、v3.0.0を有効化)
以下コマンドをIAM Access Analyzer委任アカウントとメンバーアカウントで実行します。
$ aws securityhub batch-enable-standards --standards-subscription-requests '{"StandardsArn": "arn:aws:securityhub:ap-northeast-1::standards/cis-aws-foundations-benchmark/v/3.0.0"}'
Tips: AWS Configルールのみデプロイ
AWS Configルールのみの確認でよければ、以下の手順でセキュリティ標準を有効化しなくてもAWS Configルール単位でデプロイすることができます。
(IAM Access Analyzer委任アカウント)信頼ゾーン:現在の組織でアナライザーを作成
Organizations単位でアナライザーを作成します。
アナライザー作成
$ aws accessanalyzer create-analyzer --analyzer-name org-access-analyzer --type ORGANIZATION
確認
$ aws accessanalyzer list-analyzers
{
"analyzers": [
{
aws:access-analyzer:ap-northeast-1:1234567890:analyzer/org-access-analyzer",
"name": "org-access-analyzer",
"type": "ORGANIZATION",
"createdAt": "2024-08-16T06:31:05+00:00",
"lastResourceAnalyzed": "arn:aws:sns:ap-northeast-1: 1234567890:aws-controltower-SecurityNotifications",
"lastResourceAnalyzedAt": "2024-08-16T06:31:17.855000+00:00",
"tags": {},
"status": "ACTIVE"
},
マネジメントコンソールから確認
Tips: IAM Access Analyzerサービスリンクロール
Organizations管理アカウントでIAM Access Analyzerを有効化を実施したことがない場合、手順を実施時に以下のエラーが発生することがあります。
「Access Analyzer Service Liked Role is not in the organizational management account」
Organizations管理アカウントにIAM Access Analyzerのサービスリンクロールが存在しないことに起因しています。
アナライザーを作成することで、サービスリンクロールが作成されます。以下のコマンドを管理アカウントで実行します。
$ aws accessanalyzer create-analyzer --analyzer-name access-analyzer --type <ACCOUNT | ORGANIZATION> # typeはどちらでも問題ないです
(IAM Access Analyzer委任アカウント)AWS SecurityHubコントロールのステータスを確認する
委任アカウントのAWS Security Hub IAM.28のコントロールステータスを確認します。
コンプライアンスのステータスは「成功」(PASSED)でした。委任アカウントにはOrganizations用のアナライザーが存在するので、想定通りです。
(メンバーアカウント)AWS SecurityHubコントロールのステータスを確認する
メンバーアカウントのAWS Security Hub IAM.28のコントロールステータスを確認します。
コンプライアンスのステータスは「失敗」(FAILED)でした。
メンバーアカウント内のIAM Access Analyzerを確認すると、アナライザーは存在していません。
Organizations環境で有効化時に、自動的にメンバーアカウントにアナライザーが作成されるといった動作はありませんでした。(委任アカウントだけに作成される)
「成功」ステータスにするには、アカウント内にアナライザーが存在する必要があります。
おわりに
Organizations環境におけるAWS Security Hubコントロール[IAM.28]の対応についてでした。
Organizationsでアナライザーを作成している環境で、このコントロールの対応のために、アカウント単位のアナライザーも作るのは手間が大きいと思います。
個人的にはOrganizations単位でアナライザーを有効化している環境では、コントロールを無効化しても良いかと思います。
以上、AWS事業本部の佐藤(@chari7311)でした。