Organizations環境におけるAWS Security Hubコントロール「[IAM.28]IAM Access Analyzer external access analyzer should be enabled」の動作と対応

Organizations環境におけるAWS Security Hubコントロール「[IAM.28]IAM Access Analyzer external access analyzer should be enabled」の動作と対応

Clock Icon2024.08.16

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委任アカウントを管理アカウントに読み替えてください。

https://dev.classmethod.jp/articles/create-analyzer-all-region-organizations/

(IAM Access Analyzer委任アカウント・メンバーアカウント)AWS SecurityHub該当のコントロールを有効化する

IAM.28は現時点では、現時点では以下のセキュリティ標準に含まれます。

CIS AWS Foundations Benchmark v3.0.0/1.20

https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/iam-controls.html#iam-28

該当のセキュリティ標準を有効化して、コントロールを有効化します。(以下では、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ルール単位でデプロイすることができます。

https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/aws-config-managed-rules-cloudformation-templates.html

(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"
        },

マネジメントコンソールから確認

アナライザーの設定___Access_Analyzer___ap-northeast-1.png

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はどちらでも問題ないです

https://dev.classmethod.jp/articles/access-analyzer-create-iam-role/

(IAM Access Analyzer委任アカウント)AWS SecurityHubコントロールのステータスを確認する

委任アカウントのAWS Security Hub IAM.28のコントロールステータスを確認します。

IAM_28___CIS_AWS_Foundations_Benchmark_v3_0_0___セキュリティ基準___Security_Hub___ap-northeast-1.png

コンプライアンスのステータスは「成功」(PASSED)でした。委任アカウントにはOrganizations用のアナライザーが存在するので、想定通りです。

(メンバーアカウント)AWS SecurityHubコントロールのステータスを確認する

メンバーアカウントのAWS Security Hub IAM.28のコントロールステータスを確認します。

コンプライアンスのステータスは「失敗」(FAILED)でした。

IAM_28___CIS_AWS_Foundations_Benchmark_v3_0_0___セキュリティ基準___Security_Hub___ap-northeast-1.png

メンバーアカウント内のIAM Access Analyzerを確認すると、アナライザーは存在していません。

アナライザーの設定___Access_Analyzer___ap-northeast-1.png

Organizations環境で有効化時に、自動的にメンバーアカウントにアナライザーが作成されるといった動作はありませんでした。(委任アカウントだけに作成される)

「成功」ステータスにするには、アカウント内にアナライザーが存在する必要があります。

おわりに

Organizations環境におけるAWS Security Hubコントロール[IAM.28]の対応についてでした。

Organizationsでアナライザーを作成している環境で、このコントロールの対応のために、アカウント単位のアナライザーも作るのは手間が大きいと思います。

個人的にはOrganizations単位でアナライザーを有効化している環境では、コントロールを無効化しても良いかと思います。

以上、AWS事業本部の佐藤(@chari7311)でした。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.