AWS Identity and Access Management の Security Hub コントロール
これらの AWS Security Hub CSPM コントロールは、 AWS Identity and Access Management (IAM) サービスとリソースを評価します。コントロールは、すべての AWS リージョン で使用できるとは限りません。詳細については、「リージョン別のコントロールの可用性」を参照してください。
[IAM.1] IAM ポリシーでは、完全な「*」管理者権限を許可しないでください
関連する要件: CIS AWS Foundations Benchmark v1.2.0/1.22、CIS AWS Foundations Benchmark v1.4.0/1.16、NIST.800-53.r5 AC-2、NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-5、NIST.800-53.r5 AC-6、NIST.800-53.r5 AC-6(10)、NIST.800-53.r5 AC-6(2)、NIST.800-53.r5 AC-6(3)、NIST.800-171.r2 3.1.4、PCI DSS v3.2.1/7.2.1
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 高
リソースタイプ :AWS::IAM::Policy
AWS Config ルール :iam-policy-no-statements-with-admin-access
スケジュールタイプ: 変更がトリガーされた場合
パラメータ :
excludePermissionBoundaryPolicy: true(カスタマイズ不可)
このコントロールは、IAM ポリシー (カスタマー管理ポリシーとも呼ばれます) のデフォルトバージョンに、"Action": "*" が "Resource": "*" に対して規定された "Effect": "Allow" ステートメントを持つ管理者アクセス権があるかどうかをチェックします。このようなステートメントを含む IAM ポリシーがある場合、コントロールは失敗します。
コントロールは、作成したカスタマーマネージドポリシーのみをチェックします。インラインおよび AWS マネージドポリシーはチェックされません。
IAM ポリシーは、ユーザー、グループ、またはロールに付与される権限のセットを定義します。標準的なセキュリティアドバイスに従って、AWS は最小特権を付与することを推奨します。これは、タスクの実行に必要な許可のみ付与することを意味します。ユーザーが必要とする最小限の許可セットではなく、完全な管理者権限を提供すると、リソースが不要なアクションにさらされる可能性があります。
完全な管理者権限を許可するのではなく、ユーザーが何をする必要があるのかを決定し、ユーザーが、それらのタスクのみを実行できるポリシーを作成します。最小限の許可セットから開始し、必要に応じて追加許可を付与する方がより安全です。あまりにも寛大な許可から始めて、後でそれらを強化しようとしないでください。
"Effect": "Allow"
および "Action": "*" が "Resource": "*" に対して規定されたステートメントを持つ IAM ポリシーは削除する必要があります。
注記
AWS Config は、Security Hub を使用するすべてのリージョンで有効にする必要があります。ただし、グローバルリソースの記録は 1 つのリージョンで有効にすることができます。グローバルリソースを 1 つのリージョンにのみ記録する場合は、グローバルリソースを記録するリージョン以外のすべてのリージョンでこのコントロールを無効にすることができます。
修正
IAM ポリシーを変更して、完全な「*」管理者権限を許可しないようにする方法については、「IAM ユーザーガイド」の「IAM ポリシーの編集」を参照してください。
[IAM.2] IAM ユーザーには IAM ポリシーを添付しないでください
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.14、CIS AWS Foundations Benchmark v3.0.0/1.15、CIS AWS Foundations Benchmark v1.2.0/1.16、NIST.800-53.r5 AC-2、NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-6、NIST.800-53.r5 AC-6(3)、NIST.800-171.r2 3.1.1、NIST.800-171.r2 3.1.2、NIST.800-171.r2 3.1.7、NIST.800-171.r2 3.3.9、NIST.800-171.r2 3.13.3、PCI DSS v3.2.1/7.2.1
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 低
リソースタイプ :AWS::IAM::User
AWS Config ルール :iam-user-no-policies-check
スケジュールタイプ: 変更がトリガーされた場合
パラメータ : なし
このコントロールは、IAM ユーザーにポリシーが添付済みかどうかをチェックします。IAM ユーザーにポリシーが添付されている場合、コントロールは失敗します。代わりに、IAM ユーザーは、IAM グループまたはロールから許可を継承するか、ロールを引き受ける必要があります。
デフォルトでは、IAM ユーザー、グループ、ロールには AWS リソースへのアクセス権はありません。IAM ポリシーで、ユーザー、グループ、またはロールに権限を付与します。IAM ポリシーはグループとロールには直接適用しますが、ユーザーには直接適用しないことを推奨します。グループレベルまたはロールレベルで権限を割り当てると、ユーザー数が増えるにつれてアクセス管理の複雑さが軽減されます。アクセス管理の複雑さを軽減することで、プリンシパルが誤って過剰な権限を受け取ったり保持する機会を減らすことができます。
注記
AWS Config は、Security Hub を使用するすべてのリージョンで有効にする必要があります。ただし、グローバルリソースの記録は 1 つのリージョンで有効にすることができます。グローバルリソースを 1 つのリージョンにのみ記録する場合は、グローバルリソースを記録するリージョン以外のすべてのリージョンでこのコントロールを無効にすることができます。
修正
この問題を解決するには、IAM グループを作成し、ポリシーをこのグループにアタッチします。続いて、ユーザーをこのグループに追加します。ポリシーは、グループ内の各ユーザーに適用されます。ユーザーに直接添付されているポリシーを削除するには、「IAM ユーザーガイド」の「IAM ID のアクセス許可の追加および削除」を参照してください。
[IAM.3] IAM ユーザーのアクセスキーは 90 日以内にローテーションする必要があります
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.13、CIS AWS Foundations Benchmark v3.0.0/1.14、CIS AWS Foundations Benchmark v1.4.0/1.14、CIS AWS Foundations Benchmark v1.2.0/1.4、NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-2(3)、NIST.800-53.r5 AC-3(15)、PCI DSS v4.0.1/8.3.9、PCI DSS v4.0.1/8.6.3
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::IAM::User
AWS Config ルール :access-keys-rotated
スケジュールタイプ: 定期的
パラメータ :
-
maxAccessKeyAge:90(カスタマイズ不可)
このコントロールは、アクティブなアクセスキーが 90 日以内にローテーションされているかどうかをチェックします。
アカウントのすべてのアクセスキーを生成したり削除したりしないことを強く推奨します。代わりにベストプラクティスとして、1 つ以上の IAM ロールを作成するか、AWS IAM Identity Center によるフェデレーション
各アプローチにはそれぞれのユースケースがあります。フェデレーションは、既存の中央ディレクトリを保有する企業や、現在の制限 IAM ユーザーよりも多くを必要とする予定の企業にとって一般的に適しています。AWS 環境の外部で実行されるアプリケーションには、AWS リソースへのプログラムによるアクセスキーが必要です。
ただし、プログラムによるアクセスを必要とするリソースが AWS 内部で実行される場合、IAM ロールの使用がベストプラクティスとなります。ロールを使用すると、アクセスキー ID とシークレットアクセスキーを設定にハードコーディングすることなく、リソースへのアクセスを許可できます。
アクセスキーとアカウントの保護の詳細については、「AWS 全般のリファレンス」の「AWS アクセスキーを管理するためのベストプラクティス」を参照してください。また、ブログ記事「プログラムからのアクセス利用時に AWS アカウント を保護するためのガイドライン
アクセスキーが既に存在する場合、Security Hub では 90 日ごとにアクセスキーをローテーションすることを推奨します。アクセスキーをローテーションすることにより、侵害されたアカウントや終了したアカウントに関連付けられているアクセスキーが使用される可能性が低くなります。また、紛失した、クラックされた、盗まれた古いキーでデータにアクセスできないようにします。アクセスキーをローテーションしたら、必ずアプリケーションを更新してください。
アクセスキーは、アクセスキー ID とシークレットアクセスキーで構成されます。これは AWS へのプログラムによるリクエストの署名に使用されます。AWS CLI、Tools for Windows PowerShell、AWS SDK から AWS をプログラムで呼び出したり、個々の AWS のサービス の API 操作を使用して直接 HTTP 呼び出しを行うには、ユーザー自身のアクセスキーが必要です。
組織で AWS IAM Identity Center (IAM Identity Center) を使用している場合、ユーザーは Active Directory、組み込み IAM Identity Center ディレクトリ、または IAM Identity Center に接続された別の ID プロバイダー (IdP) にサインインできます。次に、アクセスキーを必要とせずに、AWS CLI コマンドを実行したり、AWS API オペレーションを呼び出しす IAM ロールにマッピングされます。詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS CLI を設定して AWS IAM Identity Center を使用する」を参照してください。
注記
AWS Config は、Security Hub を使用するすべてのリージョンで有効にする必要があります。ただし、グローバルリソースの記録は 1 つのリージョンで有効にすることができます。グローバルリソースを 1 つのリージョンにのみ記録する場合は、グローバルリソースを記録するリージョン以外のすべてのリージョンでこのコントロールを無効にすることができます。
修正
90 日以上経過したアクセスキーをローテーションするには、「IAM ユーザーガイド」の「アクセスキーのローテーション」を参照してください。[アクセスキーの有効期間] が 90 日を超えるすべてのユーザーに対する指示に従ってください。
[IAM.4] IAM ルートユーザーアクセスキーが存在してはいけません
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.3、CIS AWS Foundations Benchmark v3.0.0/1.4、CIS AWS Foundations Benchmark v1.4.0/1.4、CIS AWS Foundations Benchmark v1.2.0/1.12、PCI DSS v3.2.1/2.1、PCI DSS v3.2.1/2.2、PCI DSS v3.2.1/7.2.1、NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-6、NIST.800-53.r5 AC-6(10)、NIST.800-53.r5 AC-6(2)
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 非常事態
リソースタイプ :AWS::::Account
AWS Config ルール :iam-root-access-key-check
スケジュールタイプ: 定期的
パラメータ: なし
このコントロールは、ルートユーザーアクセスキーが存在するかどうかをチェックします。
ルートユーザーは、最も権限のある AWS アカウント です。AWS アクセスキーは、指定されたアカウントにプログラムからアクセスすることを可能にします。
Security Hub では、ルートユーザーに関連付けられたすべてのアクセスキーの削除を推奨します。これにより、お使いのアカウントの侵害に使用できるベクトルが制限されます。また、最小特権のロールベースのアカウントの作成と使用が促進されます。
修正
ルートユーザーアクセスキーを削除するには、「IAM ユーザーガイド」の「ルートユーザーのアクセスキーの削除」を参照してください。AWS GovCloud (US) の AWS アカウント からルートユーザーアクセスキーを削除するには、「AWS GovCloud (US) ユーザーガイド」の「AWS GovCloud (US) アカウントルートユーザーのアクセスキーの削除」を参照してください。
[IAM.5] コンソールパスワードを使用するすべての IAM ユーザーに対して MFA を有効にする必要があります
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.9、CIS AWS Foundations Benchmark v3.0.0/1.10、CIS AWS Foundations Benchmark v1.4.0/1.10、CIS AWS Foundations Benchmark v1.2.0/1.2、NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 IA-2(1)、NIST.800-53.r5 IA-2(2)、NIST.800-53.r5 IA-2(6)、NIST.800-53.r5 IA-2(8)、PCI DSS v4.0.1/8.4.2
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::IAM::User
AWS Config ルール :mfa-enabled-for-iam-console-access
スケジュールタイプ: 定期的
パラメータ: なし
このコントロールは、コンソールパスワードを使用するすべての IAM ユーザーについて AWS 多要素認証 (MFA) が有効になっているかどうかをチェックします。
多要素認証 (MFA) は、ユーザー名とパスワードに更なる保護手段を追加します。MFA が有効な場合、ユーザーが AWS ウェブサイトにサインインすると、ユーザー名とパスワードの入力を求められます。さらに、AWS MFA デバイスからの認証コードの入力が求められます。
コンソールパスワードを使用するすべてのアカウントにおいて、MFA を有効にすることを推奨します。MFA は、コンソールアクセスのセキュリティを強化するために設計されています。認証プリンシパルは、時間的制約のあるキーを発行するデバイスを所有し、認証情報に関する知識がある必要があります。
注記
AWS Config は、Security Hub を使用するすべてのリージョンで有効にする必要があります。ただし、グローバルリソースの記録は 1 つのリージョンで有効にすることができます。グローバルリソースを 1 つのリージョンにのみ記録する場合は、グローバルリソースを記録するリージョン以外のすべてのリージョンでこのコントロールを無効にすることができます。
修正
IAM ユーザーに MFA を追加するには、「IAM ユーザーガイド」の「Using multi-factor authentication (MFA) in AWS」を参照してください。
[IAM.6] ルートユーザーに対してハードウェア MFA を有効にする必要があります
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.5、CIS AWS Foundations Benchmark v3.0.0/1.6、CIS AWS Foundations Benchmark v1.4.0/1.6、CIS AWS Foundations Benchmark v1.2.0/1.14、PCI DSS v3.2.1/8.3.1、NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 IA-2(1)、NIST.800-53.r5 IA-2(2)、NIST.800-53.r5 IA-2(6)、NIST.800-53.r5 IA-2(8)、PCI DSS v4.0.1/8.4.2
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 非常事態
リソースタイプ :AWS::::Account
AWS Config ルール :root-account-hardware-mfa-enabled
スケジュールタイプ: 定期的
パラメータ : なし
このコントロールは、AWS アカウント で、ルートユーザー認証情報を使用してサインインする際に、ハードウェア多要素認証 (MFA) デバイスの使用が有効になっているかどうかをチェックします。ハードウェア MFA が有効になっていない場合や、仮想 MFA デバイスにルートユーザー認証情報によるサインインが許可されている場合、コントロールは失敗します。
仮想 MFA はハードウェア MFA デバイスと同じレベルのセキュリティを提供しない可能性があります。ハードウェアの購入承認の待機中、またはハードウェアの到着を待つ間にのみ、仮想 MFA デバイスの使用を推奨します。詳細については、「IAM ユーザーガイド」の「仮想 MFA デバイスの有効化 (コンソール)」を参照してください。
注記
Security Hub は、AWS アカウント 内のルートユーザー認証情報 (ログインプロファイル) の存在に基づいてこのコントロールを評価します。コントロールは、次の場合に PASSED 検出結果を生成します。
-
ルートユーザーの認証情報がアカウントに存在し、ルートユーザーのハードウェア MFA が有効になっている。
-
ルートユーザーの認証情報がアカウントに存在しない。
このコントロールは、ルートユーザーの認証情報がアカウントに存在し、ルートユーザーのハードウェア MFA が有効になっていない場合、FAILED 検出結果を生成します。
修正
ルートユーザーのハードウェア MFA を有効にする方法については、「IAM ユーザーガイド」の「AWS アカウントのルートユーザー の多要素認証」を参照してください。
[IAM.7] IAM ユーザーのパスワードポリシーには強力な設定が必要です
関連する要件: NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-2(3)、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 IA-5(1)、NIST.800-171.r2 3.5.2、NIST.800-171.r2 3.5.7、NIST.800-171.r2 3.5.8、PCI DSS v4.0.1/8.3.6、PCI DSS v4.0.1/8.3.7、PCI DSS v4.0.1/8.3.9、PCI DSS v4.0.1/8.3.10.1、PCI DSS v4.0.1/8.6.3
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::::Account
AWS Config ルール :iam-password-policy
スケジュールタイプ: 定期的
パラメータ :
| パラメータ | 説明 | [Type] (タイプ) | 許可されているカスタム値 | Security Hub のデフォルト値 |
|---|---|---|---|---|
|
|
パスワードには少なくとも 1 つの大文字が必要です |
ブール値 |
|
|
|
|
パスワードには少なくとも 1 つの小文字が必要です |
ブール値 |
|
|
|
|
パスワードには少なくとも 1 つの記号が必要です |
ブール値 |
|
|
|
|
パスワードには少なくとも 1 つの数字が必要です |
ブール値 |
|
|
|
|
パスワードに含まれる文字の最小数 |
整数 |
|
|
|
|
古いパスワードを再使用できるようになるまでのパスワードローテーション回数 |
整数 |
|
デフォルト値なし |
|
|
パスワードが有効期限切れになるまでの日数 |
整数 |
|
デフォルト値なし |
このコントロールは、IAM ユーザーのアカウントパスワードポリシーが強力な設定を使用しているかどうかをチェックします。パスワードポリシーが強力な設定を使用していない場合、コントロールは失敗します。カスタムパラメータ値を指定しない限り、Security Hub は前の表に記載されているデフォルト値を使用します。PasswordReusePrevention パラメータおよび MaxPasswordAge パラメータにはデフォルト値がないため、これらのパラメータを除外した場合、Security Hub はこのコントロールを評価する際にパスワードローテーションの回数とパスワードの有効期間を無視します。
IAM ユーザーが AWS マネジメントコンソール にアクセスするには、パスワードが必要です。ベストプラクティスとして、Security Hub では IAM ユーザーを作成する代わりに、フェデレーションの使用を強く推奨します。フェデレーションでは、ユーザーは既存の企業認証情報を使用して、AWS マネジメントコンソール にログインできます。AWS IAM Identity Center (IAM Identity Center)を使用してユーザーを作成またはフェデレートし、IAM ロールをアカウントに引継ぎます。
ID プロバイダーとフェデレーションの詳細については、「IAM ユーザーガイド」の「ID プロバイダーとフェデレーション」を参照してください。IAM Identity Center の詳細については、「AWS IAM Identity Center ユーザーガイド」を参照してください。
IAM ユーザーを使用する必要がある場合は、Security Hub では、強力なユーザーパスワードの作成を強制することを推奨します。AWS アカウント にパスワードポリシーを設定し、パスワードの複雑さの要件と必須のローテーション期間を指定することができます。パスワードポリシーを作成または変更する場合、パスワードポリシーの設定の多くは、ユーザーが次回パスワードを変更するときに適用されます。ただし、一部の設定は即座に適用されます。
修正
パスワードポリシーの更新については、「IAM ユーザーガイド」の「IAM ユーザーのアカウントパスワードポリシーの設定」を参照してください。
[IAM.8] 未使用の IAM ユーザー認証情報は削除する必要があります
関連する要件: CIS AWS Foundations Benchmark v1.2.0/1.3、NIST.800-53.r5 AC-2、NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-2(3)、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-6、NIST.800-171.r2 3.1.2、PCI DSS v3.2.1/8.1.4、PCI DSS v4.0.1/8.2.6
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::IAM::User
AWS Config ルール :iam-user-unused-credentials-check
スケジュールタイプ: 定期的
パラメータ :
-
maxCredentialUsageAge:90(カスタマイズ不可)
このコントロールは、IAM ユーザーが 90 日間使用されていないパスワードまたはアクティブなアクセスキーを持っているかどうかをチェックします。
IAM ユーザーは、パスワードやアクセスキーなどのさまざまなタイプの認証情報を使用して AWS リソースにアクセスできます。
Security Hub では、90 日以上使用されていないすべての認証情報を削除または非アクティブ化することを推奨します。不要な認証情報を無効化または削除することにより、侵害または放棄されたアカウントに関連付けられている認証情報が使用される可能性が少なくなります。
注記
AWS Config は、Security Hub を使用するすべてのリージョンで有効にする必要があります。ただし、グローバルリソースの記録は 1 つのリージョンで有効にすることができます。グローバルリソースを 1 つのリージョンにのみ記録する場合は、グローバルリソースを記録するリージョン以外のすべてのリージョンでこのコントロールを無効にすることができます。
修正
IAM コンソールでユーザー情報を表示すると、[アクセスキーの有効期間]、[パスワードの有効期間]、[最終アクティビティ] の列が表示されます。これらの列の値のいずれかが 90 日より大きい場合は、それらのユーザーの認証情報を非アクティブにします。
認証情報レポートを使用してユーザーアカウントをモニタリングし、90 日以上アクティビティのないアカウントを特定することもできます。IAM コンソールから認証情報レポートを .csv 形式でダウンロードできます。
非アクティブなアカウント、または未使用の認証情報を特定したら、それらを非アクティブ化します。手順については、「IAM ユーザーガイド」の「IAM ユーザーパスワードの作成、変更、削除 (コンソール)」を参照してください。
[IAM.9] ルートユーザーに対して MFA を有効にする必要があります
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.4、PCI DSS v3.2.1/8.3.1、PCI DSS v4.0.1/8.4.2、CIS AWS Foundations Benchmark v3.0.0/1.5、CIS AWS Foundations Benchmark v1.4.0/1.5、CIS AWS Foundations Benchmark v1.2.0/1.13、NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 IA-2(1)、NIST.800-53.r5 IA-2(2)、NIST.800-53.r5 IA-2(6)、NIST.800-53.r5 IA-2(8)
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 非常事態
リソースタイプ :AWS::::Account
AWS Config ルール :root-account-mfa-enabled
スケジュールタイプ: 定期的
パラメータ : なし
このコントロールは、AWS マネジメントコンソール にサインインする AWS アカウント の IAM ルートユーザーに対して多要素認証 (MFA) が有効になっているかどうかをチェックします。アカウントのルートユーザーに対して MFA が有効になっていない場合、コントロールは失敗します。
AWS アカウント の IAM ルートユーザーは、アカウントのすべてのサービスとリソースへの完全なアクセス権を持ちます。MFA が有効になっている場合、AWS マネジメントコンソール にサインインするには、ユーザーが AWS MFA デバイスからユーザー名、パスワード、および認証コードを入力する必要があります。MFA は、ユーザー名とパスワードに更なる保護手段を追加します。
このコントロールは、次の場合に PASSED 検出結果を生成します。
-
ルートユーザーの認証情報がアカウントに存在し、ルートユーザーの MFA が有効になっている。
-
ルートユーザーの認証情報がアカウントに存在しない。
このコントロールは、ルートユーザーの認証情報がアカウントに存在し、ルートユーザーに対して MFA が有効になっていない場合、FAILED 検出結果を生成します。
修正
AWS アカウント のルートユーザーに対して MFA を有効にする方法については、「AWS Identity and Access Management ユーザーガイド」の「AWS アカウントのルートユーザー の多要素認証」を参照してください。
[IAM.10] IAM ユーザーのパスワードポリシーには強力な設定が必要です
関連する要件: NIST.800-171.r2 3.5.2、NIST.800-171.r2 3.5.7、NIST.800-171.r2 3.5.8、PCI DSS v3.2.1/8.1.4、PCI DSS v3.2.1/8.2.3、PCI DSS v3.2.1/8.2.4、PCI DSS v3.2.1/8.2.5
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::::Account
AWS Config ルール :iam-password-policy
スケジュールタイプ: 定期的
パラメータ: なし
このコントロールは、IAM ユーザーのアカウントパスワードポリシーが次の最低限の PCI DSS 設定を使用しているかどうかをチェックします。
-
RequireUppercaseCharacters- パスワードには少なくとも 1 つの大文字が必要。(デフォルト =true) -
RequireLowercaseCharacters- パスワードには少なくとも 1 つの小文字が必要。(デフォルト =true) -
RequireNumbers- パスワードには少なくとも 1 つの数字が必要。(デフォルト =true) -
MinimumPasswordLength- パスワードの最小文字数。(デフォルト = 7 以上) -
PasswordReusePrevention- パスワードの再利用を許可するまでのパスワードの数。(デフォルト = 4) -
MaxPasswordAge– パスワードが有効期限切れになるまでの日数。(デフォルト = 90)
注記
2025 年 5 月 30 日に、Security Hub は、PCI DSS v4.0.1 標準からこのコントロールを削除しました。PCI DSS v4.0.1 では、8 文字以上のパスワードが必要です。このコントロールは、異なるパスワード要件を持つ PCI DSS v3.2.1 標準に引き続き適用されます。
PCI DSS v4.0.1 の要件に照らしてアカウントのパスワードポリシーを評価するには、IAM.7 コントロールを使用できます。このコントロールでは、8 文字以上のパスワードが必要です。また、パスワードの長さやその他のパラメータのカスタム値もサポートしています。IAM.7 コントロールは、Security Hub の PCI DSS v4.0.1 標準の一部です。
修正
推奨される設定を使用するようにパスワードポリシーを更新するには、「IAM ユーザーガイド」の「IAM ユーザー用のアカウントパスワードポリシーの設定」を参照してください。
[IAM.11] IAM パスワードポリシーで少なくとも 1 文字の大文字が要求されていることを確認します
関連する要件: CIS AWS Foundations Benchmark v1.2.0/1.5、NIST.800-171.r2 3.5.7、PCI DSS v4.0.1/8.3.6、PCI DSS v4.0.1/8.6.3
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::::Account
AWS Config ルール :iam-password-policy
スケジュールタイプ: 定期的
パラメータ : なし
パスワードポリシーは、パスワードの複雑さの要件をある程度強制します。IAM パスワードポリシーを使用して、パスワードで異なる文字セットを使用するようにします。
CIS では、パスワードポリシーで少なくとも 1 文字の大文字を要求することを推奨しています。パスワードの複雑さに関するポリシーを設定すると、ブルートフォースのログイン試行に対するアカウントの耐障害性が高まります。
修正
パスワードポリシーの変更については、「IAM ユーザーガイド」の「IAM ユーザーのアカウントパスワードポリシーの設定」を参照してください。[パスワードの強度] で、[ラテンアルファベット (A–Z) の少なくとも 1 つの大文字が必要] を選択します。
[IAM.12] IAM パスワードポリシーで少なくとも 1 文字の小文字が要求されていることを確認します
関連する要件: CIS AWS Foundations Benchmark v1.2.0/1.6、NIST.800-171.r2 3.5.7、PCI DSS v4.0.1/8.3.6、PCI DSS v4.0.1/8.6.3
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::::Account
AWS Config ルール :iam-password-policy
スケジュールタイプ: 定期的
パラメータ : なし
パスワードポリシーは、パスワードの複雑さの要件をある程度強制します。IAM パスワードポリシーを使用して、パスワードで異なる文字セットを使用するようにします。CIS では、パスワードポリシーで少なくとも 1 文字の小文字を要求することを推奨しています。パスワードの複雑さに関するポリシーを設定すると、ブルートフォースのログイン試行に対するアカウントの耐障害性が高まります。
修正
パスワードポリシーの変更については、「IAM ユーザーガイド」の「IAM ユーザーのアカウントパスワードポリシーの設定」を参照してください。[パスワードの強度] で、[ラテンアルファベット (A–Z) の少なくとも 1 つの小文字が必要] を選択します。
[IAM.13] IAM パスワードポリシーで少なくとも 1 文字の記号が要求されていることを確認します
関連する要件: CIS AWS Foundations Benchmark v1.2.0/1.7、NIST.800-171.r2 3.5.7
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::::Account
AWS Config ルール :iam-password-policy
スケジュールタイプ: 定期的
パラメータ : なし
パスワードポリシーは、パスワードの複雑さの要件をある程度強制します。IAM パスワードポリシーを使用して、パスワードで異なる文字セットを使用するようにします。
CIS では、パスワードポリシーで少なくとも 1 文字の記号を要求することを推奨しています。パスワードの複雑さに関するポリシーを設定すると、ブルートフォースのログイン試行に対するアカウントの耐障害性が高まります。
修正
パスワードポリシーの変更については、「IAM ユーザーガイド」の「IAM ユーザーのアカウントパスワードポリシーの設定」を参照してください。[パスワードの強度] で、[少なくとも 1 つの英数字以外の文字が必要] を選択します。
[IAM.14] IAM パスワードポリシーで少なくとも 1 文字の数字が要求されていることを確認します
関連する要件: CIS AWS Foundations Benchmark v1.2.0/1.8、NIST.800-171.r2 3.5.7、PCI DSS v4.0.1/8.3.6、PCI DSS v4.0.1/8.6.3
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::::Account
AWS Config ルール :iam-password-policy
スケジュールタイプ: 定期的
パラメータ : なし
パスワードポリシーは、パスワードの複雑さの要件をある程度強制します。IAM パスワードポリシーを使用して、パスワードで異なる文字セットを使用するようにします。
CIS では、パスワードポリシーで少なくとも 1 文字の数字を要求することを推奨しています。パスワードの複雑さに関するポリシーを設定すると、ブルートフォースのログイン試行に対するアカウントの耐障害性が高まります。
修正
パスワードポリシーの変更については、「IAM ユーザーガイド」の「IAM ユーザーのアカウントパスワードポリシーの設定」を参照してください。[パスワードの強度] で、[少なくとも 1 つの数字が必要] を選択します。
[IAM.15] IAM パスワードポリシーで 14 文字以上の長さが要求されていることを確認します
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.7、CIS AWS Foundations Benchmark v3.0.0/1.8、CIS AWS Foundations Benchmark v1.4.0/1.8、CIS AWS Foundations Benchmark v1.2.0/1.9、NIST.800-171.r2 3.5.7
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::::Account
AWS Config ルール :iam-password-policy
スケジュールタイプ: 定期的
パラメータ : なし
パスワードポリシーは、パスワードの複雑さの要件をある程度強制します。IAM パスワードポリシーを使用して、パスワードが指定された長さ以上になるようにします。
CIS では、パスワードポリシーで 14 文字以上の長さを要求することを推奨しています。パスワードの複雑さに関するポリシーを設定すると、ブルートフォースのログイン試行に対するアカウントの耐障害性が高まります。
修正
パスワードポリシーの変更については、「IAM ユーザーガイド」の「IAM ユーザーのアカウントパスワードポリシーの設定」を参照してください。[パスワードの最小文字数] で、14 またはそれ以上の数字を入力します。
[IAM.16] IAM パスワードポリシーはパスワードの再使用を禁止しています
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.8、CIS AWS Foundations Benchmark v3.0.0/1.9、CIS AWS Foundations Benchmark v1.4.0/1.9、CIS AWS Foundations Benchmark v1.2.0/1.10、NIST.800-171.r2 3.5.8、PCI DSS v4.0.1/8.3.7
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 低
リソースタイプ :AWS::::Account
AWS Config ルール :iam-password-policy
スケジュールタイプ: 定期的
パラメータ : なし
このコントロールは、記憶するパスワードの数が 24 に設定されているかどうかをチェックします。値が 24 でない場合、コントロールは失敗します。
IAM パスワードポリシーにより、同じユーザーによる特定のパスワードの再使用を防ぐことができます。
CIS では、パスワードポリシーでパスワードの再使用を禁止することを推奨しています。パスワードの再使用を禁止すると、ブルートフォースのログイン試行に対するアカウントの耐障害性が高まります。
修正
パスワードポリシーの変更については、「IAM ユーザーガイド」の「IAM ユーザーのアカウントパスワードポリシーの設定」を参照してください。[パスワードの再利用を禁止] で、24 と入力します。
[IAM.17] IAM パスワードポリシーでパスワードが 90 日以内に有効期限切れとなることを確認します
関連する要件: CIS AWS Foundations Benchmark v1.2.0/1.11、PCI DSS v4.0.1/8.3.9、PCI DSS v4.0.1/8.3.10.1
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 低
リソースタイプ :AWS::::Account
AWS Config ルール :iam-password-policy
スケジュールタイプ: 定期的
パラメータ : なし
IAM パスワードポリシーでは、指定された日数後にパスワードをローテーションするか、または有効期限切れにすることを要求できます。
CIS では、パスワードポリシーでパスワードを 90 日以内に有効期限切れにすることを推奨しています。パスワードの有効期間を短くすると、ブルートフォースのログイン試行に対するアカウントの耐障害性が高まります。定期的なパスワード変更の要求は、以下のシナリオでも役立ちます。
-
パスワードはユーザーが知らない間に、盗まれたり漏洩したりする可能性があります。これは、システムの侵害、ソフトウェアの脆弱性、または内部の脅威によって起こりえます。
-
特定の企業や政府のウェブフィルターまたはプロキシサーバーは、暗号化されている場合でもトラフィックを傍受し記録できます。
-
多くの人々が仕事、E メール、個人用など多くのシステムで同じパスワードを使用しています。
-
侵害されたエンドユーザーのワークステーションに、キーストロークロガーが設置されている可能性があります。
修正
パスワードポリシーの変更については、「IAM ユーザーガイド」の「IAM ユーザーのアカウントパスワードポリシーの設定」を参照してください。[パスワードの有効期間をオンにする] で、90 またはそれより小さい数字を入力します。
[IAM.18] AWS サポート でインシデントを管理するためのサポートロールが作成されていることを確認します
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.16、CIS AWS Foundations Benchmark v3.0.0/1.17、CIS AWS Foundations Benchmark v1.4.0/1.17、CIS AWS Foundations Benchmark v1.2.0/1.20、NIST.800-171.r2 3.1.2、PCI DSS v4.0.1/12.10.3
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 低
リソースタイプ :AWS::::Account
AWS Config ルール :iam-policy-in-use
スケジュールタイプ: 定期的
パラメータ :
policyARN:arn:(カスタマイズ不可)partition:iam::aws:policy/AWSSupportAccesspolicyUsageType:ANY(カスタマイズ不可)
AWS では、インシデントの通知と対応、およびテクニカルサポートとカスタマーサービスに使用できるサポートセンターが提供されています。
IAM ロールを作成して、認可済みのユーザーが AWS サポートでインシデントを管理できるようにします。アクセスコントロールに最小特権を導入することにより、IAM ロールには、サポート でのインシデントの管理のためにサポートセンターにアクセスすることを許可する、適切な IAM ポリシーが必要になります。
注記
AWS Config は、Security Hub を使用するすべてのリージョンで有効にする必要があります。ただし、グローバルリソースの記録は 1 つのリージョンで有効にすることができます。グローバルリソースを 1 つのリージョンにのみ記録する場合は、グローバルリソースを記録するリージョン以外のすべてのリージョンでこのコントロールを無効にすることができます。
修正
この問題を修正するには、認可済みのユーザーに サポート インシデントの管理を許可するロールを作成します。
サポート へのアクセスに使用するロールを作成するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
IAM ナビゲーションペインで [Roles] (ロール) を選択し、続いて [Create role] (ロールの作成) を選択します。
-
[Role type] (ロールタイプ) で、[Another AWS アカウント] を選択します。
-
[Account ID] (アカウント ID) に、リソースへのアクセスを許可する AWS アカウント の AWS アカウント ID を入力します。
このロールを引き受けるユーザーまたはグループが同じアカウントに属している場合は、ローカルアカウント番号を入力します。
注記
指定したアカウントの管理者は、そのアカウントのすべての ユーザーに、このロールを引き受けるアクセス許可を付与できます。そのためには、管理者から
sts:AssumeRoleアクションの許可を付与するユーザーまたはグループにポリシーを添付します。そのポリシーで、リソースはロール ARN である必要があります。 -
[Next: Permissions] (次へ: 許可) を選択します。
-
マネージドポリシー
AWSSupportAccessを検索します。 -
AWSSupportAccessマネージドポリシーのチェックボックスを選択します。 -
[Next: Tags] (次へ: タグ) を選択します。
-
(オプション) ロールにメタデータを追加するには、キーバリューのペアとしてタグをアタッチします。
IAM でのタグの使用の詳細については、「IAM ユーザーガイド」の「IAM ユーザーとロールのタグ付け」を参照してください。
-
[Next: Review] (次へ: レビュー) を選択します。
-
[Role name] (ロール名) に、ロールの名前を入力します。
ロール名は AWS アカウント アカウント内で一意である必要があります。大文字と小文字は区別されません。
-
(オプション) [Role description] (ロールの説明) に、新しいロールの説明を入力します。
-
ロールを確認し、[Create role] (ロールの作成) を選択します。
[IAM.19] すべての IAM ユーザーに対して MFA を有効にする必要があります
関連する要件: NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 IA-2(1)、NIST.800-53.r5 IA-2(2)、NIST.800-53.r5 IA-2(6)、NIST.800-53.r5 IA-2(8)、NIST.800-171.r2 3.3.8、NIST.800-171.r2 3.5.3、NIST.800-171.r2 3.5.4、NIST.800-171.r2 3.7.5、PCI DSS v3.2.1/8.3.1、PCI DSS v4.0.1/8.4.2
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::IAM::User
AWS Config ルール :iam-user-mfa-enabled
スケジュールタイプ: 定期的
パラメータ: なし
このコントロールは、IAM ユーザーが多要素認証 (MFA) を有効にしているかどうかを確認します。
注記
AWS Config は、Security Hub を使用するすべてのリージョンで有効にする必要があります。ただし、グローバルリソースの記録は 1 つのリージョンで有効にすることができます。グローバルリソースを 1 つのリージョンにのみ記録する場合は、グローバルリソースを記録するリージョン以外のすべてのリージョンでこのコントロールを無効にすることができます。
修正
IAM ユーザーに MFA を追加するには、「IAM ユーザーガイド」の「Enabling MFA devices for users in AWS」を参照してください。
[IAM.20] ルートユーザーの使用を避けます
重要
Security Hub は、2024 年 4 月にこのコントロールを廃止しました。詳細については、「Security Hub CSPM コントロールの変更ログ」を参照してください。
関連する要件: CIS AWS Foundations Benchmark v1.2.0/1.1
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 低
リソースタイプ :AWS::IAM::User
AWS Config ルール: use-of-root-account-test (カスタム Security Hub ルール)
スケジュールタイプ : 定期的
パラメータ : なし
このコントロールは、AWS アカウントのルートユーザーの利用に制限がないかどうかをチェックします。このコントロールは、以下のリソースを評価します。
Amazon Simple Notification Service (Amazon SNS)のトピック
AWS CloudTrail 証跡
CloudTrail トレイルに関連するメトリックスフィルター
フィルターに基づく Amazon CloudWatch アラーム
チェックの結果、以下の記述の 1 つ以上が真であれば FAILED と判定されます:
アカウントには CloudTrail トレイルは存在しません。
CloudTrail を有効にして、少なくとも 1 つのマルチリージョンの追跡で、読み取りと書き込みの管理イベントを含めた設定をする必要があります
CloudTrail トレイルは有効になっていますが、CloudWatch Logs ロググループには関連付けられていません。
Center for Internet Security (CIS) が規定する正確なメトリックフィルターが使用されていません。規定のメトリックフィルターは
'{$.userIdentity.type="Root" && $.userIdentity.invokedBy NOT EXISTS && $.eventType !="AwsServiceEvent"}'です。メトリックスフィルターに基づく CloudWatch アラームがアカウントに存在しません。
関連する SNS トピックに通知を送信するように設定された CloudWatch アラームは、アラーム条件に基づいてトリガーされません。
SNS トピックが、SNS トピックにメッセージを送信するための制約に準拠していません。
SNS トピックに 1 人以上のサブスクライバーが存在しません。
チェックの結果、以下の条件の 1 つ以上に当てはまれば、NO_DATA コントロールステータスになります:
マルチリージョンの追跡が別のリージョンに基づいています。Security Hub は、追跡が基づいているリージョンでのみ結果を生成できます。
マルチリージョンの追跡が別のアカウントに属しています。Security Hub は、追跡を所有するアカウントの結果のみを生成できます。
チェックの結果、以下の条件の 1 つ以上に当てはまれば、WARNING コントロールステータスになります:
現在のアカウントは、CloudWatch アラームで参照されている SNS トピックを所有していません。
ListSubscriptionsByTopicSNS API を呼び出しても、現在のアカウントは SNS トピックにアクセスできません。
注記
組織内の多数のアカウントからのイベントを記録するには、組織の証跡を使用することをお勧めします。組織の証跡はデフォルトではマルチリージョンの追跡であり、AWS Organizations 管理アカウントまたは CloudTrail の委任された管理者アカウントでのみ管理できます。組織の証跡を使用すると、組織のメンバーアカウントで評価されたコントロールの管理ステータスは NO_DATA になります。メンバーアカウントでは、Security Hub はメンバー所有のリソースの検出結果のみを生成します。組織の証跡に関する検出結果は、リソース所有者のアカウントで生成されます。クロスリージョン集約を使用すると、Security Hub の委任された管理者アカウントでこれらの検出結果を確認できます。
ベストプラクティスは、アカウントおよびサービスの管理タスクを実行するときに必要となる場合のみ、ルートユーザー認証情報を使用することです。IAM ポリシーは直接ユーザーに適用するのではなく、グループとロールに適用します。日常的に使用する管理者を設定する方法については、「IAM ユーザーガイド」の「Creating your first IAM admin user and group」を参照してください。
修正
この問題を修正するためのステップには、Amazon SNS トピック、CloudTrail 追跡、メトリクスフィルター、およびメトリクスフィルターのアラームの設定が含まれます。
Amazon SNS トピックを作成するには
Amazon SNS コンソール (https://console.aws.amazon.com/sns/v3/home
) を開きます。 -
すべての CIS アラームを受信する Amazon SNS トピックを作成します。
トピックに少なくとも 1 人の受信者を作成します。詳細については、「Amazon Simple Notification Service デベロッパーガイド」の「Amazon SNS の使用開始」を参照してください。
次に、すべてのリージョンに適用されるアクティブな CloudTrail を設定します。これを行うには、[CloudTrail.1] CloudTrail を有効にして、少なくとも 1 つのマルチリージョンの追跡で、読み取りと書き込みの管理イベントを含めた設定をする必要があります。 の修正ステップに従います。
CloudTrail 追跡に関連付ける CloudWatch Logs ロググループの名前を書き留めます。そのロググループに対してメトリクスフィルターを作成します。
最後に、メトリクスフィルターとアラームを作成します。
メトリクスフィルターとアラームを作成するには
CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/
) を開きます。 -
ナビゲーションペインで、[Log groups] (ロググループ) を選択します。
-
作成した CloudTrail 追跡に関連付けられている CloudWatch Logs ロググループのチェックボックスを選択します。
-
[Actions] (アクション) から、[Create Metric Filter] (メトリクスフィルターの作成) を選択します。
-
[Define pattern] (パターンを定義) で、以下の操作を行います。
-
次のパターンをコピーして、[Filter Pattern] (フィルターパターン) フィールドに貼り付けます。
{$.userIdentity.type="Root" && $.userIdentity.invokedBy NOT EXISTS && $.eventType !="AwsServiceEvent"} -
[次へ] を選択します。
-
-
[Assign Metric] (メトリクスの割り当て) で、以下の操作を行います。
-
[Filter name] (フィルター名) に、メトリクスフィルターの名前を入力します。
-
[Metric namespace] (メトリクス名前空間) に
LogMetricsと入力します。すべての CIS ログメトリクスフィルターに同じ名前空間を使用した場合、すべての CIS Benchmark メトリクスがグループ化されます。
-
[Metric Name] (メトリクス名) に、メトリクスの名前を入力します。メトリクスの名前を忘れないでください。アラームの作成時にメトリクスを選択する必要があります。
-
[Metric value] (メトリクス値) に
1と入力します。 -
[次へ] を選択します。
-
-
[Review and create] (確認して作成) で、新しいメトリクスフィルター用に入力した情報を確認します。その後、[Create metric filter] (メトリクスフィルターの作成) を選択します。
-
ナビゲーションペインで [Log groups] (ロググループ)を選択し、[Metric filters] (メトリクスフィルター) で作成したフィルターを選択します。
-
フィルターのチェックボックスをオンにします。[アラームの作成] を選択します。
-
[Specify metric and conditions] (メトリクスと条件の指定) で、以下の操作を行います。
-
[Conditions] (条件) の [Threshold] (しきい値) で、[Static] (静的) を選択します。
-
[Define the alarm condition] (アラーム条件を定義) で、[Greater/Equal] (より大きい/等しい) を選択します。
-
[Define the threshold value] (しきい値の定義) で、
1を入力します。 -
[次へ] を選択します。
-
-
[Configure actions] (アクションの設定) で、次の作業を行います。
-
[Alarm state trigger] (アラーム状態トリガー) で、[In alarm] (アラーム状態) を選択します。
-
[Select an SNS topic] (SNS トピックの選択) で、[Select an existing SNS topic] (既存の SNS トピックの選択) を選択します。
-
[Send a notification to] (通知の送信先) で、前の手順で作成した SNS トピックの名前を入力します。
-
[次へ] を選択します。
-
-
[Add name and description] (名前と説明を追加) に、アラームの [Name] (名前)と [Description] (説明)を
CIS-1.1-RootAccountUsageのように入力します。続いて、[Next] (次へ) を選択します。 -
[Preview and create] (プレビューと作成) で、アラームの設定を確認します。次に [Create alarm] (アラームの作成) を選択します。
[IAM.21] 作成する IAM カスタマーマネージドポリシーにはサービスのワイルドカードアクションを許可してはいけません
関連する要件: NIST.800-53.r5 AC-2、NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-5、NIST.800-53.r5 AC-6、NIST.800-53.r5 AC-6(10)、NIST.800-53.r5 AC-6(2)、NIST.800-53.r5 AC-6(3)、NIST.800-171.r2 3.1.1、NIST.800-171.r2 3.1.2、NIST.800-171.r2 3.1.5、NIST.800-171.r2 3.1.7、NIST.800-171.r2 3.3.8、NIST.800-171.r2 3.3.9、NIST.800-171.r2 3.13.3、NIST.800-171.r2 3.13.4
カテゴリ: 検出 > セキュアなアクセス管理
重要度: 低
リソースタイプ :AWS::IAM::Policy
AWS Config ルール :iam-policy-no-statements-with-full-access
スケジュールタイプ: 変更がトリガーされた場合
パラメータ :
-
excludePermissionBoundaryPolicy:True(カスタマイズ不可)
このコントロールは、作成した IAM アイデンティティベースのポリシーに、ワイルドカード (*) を使用して、任意のサービスに対してすべてのアクションに許可を付与する許可ステートメントがあるかどうかをチェックします。ポリシーステートメントに、"Effect": "Allow" と "Action": "Service:*" が含まれている場合、コントロールは失敗します。
例えば、ポリシーに次のような記述があると、結果は失敗となります。
"Statement": [ { "Sid": "EC2-Wildcard", "Effect": "Allow", "Action": "ec2:*", "Resource": "*" }
"Effect": "Allow" と "NotAction":
" を使用する場合も、コントロールは失敗します。この場合、service:*"NotAction 要素は、NotAction で指定したアクションを除く AWS のサービス のすべてのアクションへのアクセスを許可します。
このコントロールは、カスタマー管理 IAM ポリシーにのみ適用されます。AWS によって管理される IAM ポリシーには適用されません。
AWS のサービス サービスにアクセス許可を割り当てるときには、許可される IAM アクションの範囲を IAM ポリシーで指定することが重要です。IAM アクションは、必要なアクションのみに制限する必要があります。これは、最小特権の許可のプロビジョンに役立ちます。ポリシーが許可を必要としない IAM プリンシパルに添付済みの場合、過度に許可されたポリシーは特権エスカレーションにつながる可能性があります。
場合によっては、DescribeFlowLogs や DescribeAvailabilityZones のような類似のプレフィックスを持つ IAM アクションを許可する必要があります。これらの承認済みのケースでは、共通プレフィクスにサフィックス付きワイルドカードを追加することができます。例えば、ec2:Describe*。
プレフィクスが付いた IAM アクションとサフィックス付きワイルドカードを使用する場合、このコントロールは成功します。例えば、ポリシー内の次のステートメントでは、結果が成功になります。
"Statement": [ { "Sid": "EC2-Wildcard", "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }
この方法で関連する IAM アクションをグループ化することで、IAM ポリシーのサイズ制限を超えないようにすることもできます。
注記
AWS Config は、Security Hub を使用するすべてのリージョンで有効にする必要があります。ただし、グローバルリソースの記録は 1 つのリージョンで有効にすることができます。グローバルリソースを 1 つのリージョンにのみ記録する場合は、グローバルリソースを記録するリージョン以外のすべてのリージョンでこのコントロールを無効にすることができます。
修正
この問題を修正するには、IAM ポリシーを更新して、完全な「*」管理者権限を許可しないようにします。IAM ポリシーを編集する方法の詳細は、「IAM ユーザーガイド」の「IAM ポリシーの編集」を参照してください。
[IAM.22] 45 日間未使用の IAM ユーザー認証情報は削除する必要があります
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.11、CIS AWS Foundations Benchmark v3.0.0/1.12、CIS AWS Foundations Benchmark v1.4.0/1.12、NIST.800-171.r2 3.1.2
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::IAM::User
AWS Config ルール :iam-user-unused-credentials-check
スケジュールタイプ: 定期的
パラメータ : なし
このコントロールは、IAM ユーザーが 45 日以上使用されていないパスワードまたはアクティブなアクセスキーを持っていないかどうかをチェックします。そのために、AWS Config ルールの maxCredentialUsageAge パラメータが 45 以上になっていないかチェックします。
ユーザーは、パスワードやアクセスキーなどのさまざまなタイプの認証情報を使用して AWS リソースにアクセスできます。
CIS では、45 日以上使用されていないすべての認証情報を削除または非アクティブ化することが推奨されています。不要な認証情報を無効化または削除することにより、侵害または放棄されたアカウントに関連付けられている認証情報が使用される可能性が少なくなります。
このコントロールの AWS Config ルールでは、GetCredentialReport および GenerateCredentialReport API オペレーションを使用します。API オペレーションは 4 時間ごとにしか更新されません。IAM ユーザーへの変更がこのコントロールから確認できるようになるまでに、最大 4 時間かかる場合があります。
注記
AWS Config は、Security Hub を使用するすべてのリージョンで有効にする必要があります。ただし、グローバルリソースの記録は 1 つのリージョンで有効にすることができます。グローバルリソースを 1 つのリージョンにのみ記録する場合は、グローバルリソースを記録するリージョン以外のすべてのリージョンでこのコントロールを無効にすることができます。
修正
IAM コンソールでユーザー情報を表示すると、[アクセスキーの有効期間]、[パスワードの有効期間]、[最終アクティビティ] の列が表示されます。これらの列の値のいずれかが 45 日より大きい場合は、それらのユーザーの認証情報を非アクティブにします。
認証情報レポートを使用してユーザーアカウントをモニタリングし、45 日以上アクティビティのないアカウントを特定することもできます。IAM コンソールから認証情報レポートを .csv 形式でダウンロードできます。
非アクティブなアカウント、または未使用の認証情報を特定したら、それらを非アクティブ化します。手順については、「IAM ユーザーガイド」の「IAM ユーザーパスワードの作成、変更、削除 (コンソール)」を参照してください。
[IAM.23] IAM Access Analyzer アナライザーにはタグを付ける必要があります
カテゴリ: 識別 > インベントリ > タグ付け
重要度: 低
リソースタイプ :AWS::AccessAnalyzer::Analyzer
AWS Config ルール: tagged-accessanalyzer-analyzer (カスタム Security Hub ルール)
スケジュールタイプ : 変更がトリガーされた場合
パラメータ :
| パラメータ | 説明 | [Type] (タイプ) | 許可されているカスタム値 | Security Hub のデフォルト値 |
|---|---|---|---|---|
requiredTagKeys
|
評価されたリソースに含める必要があるシステム以外のタグキーのリスト。タグキーでは、大文字と小文字が区別されます。 | StringList (最大 6 項目) | AWS 要件を満たす 1~6 個のタグキー。 |
No default value
|
このコントロールは、 AWS Identity and Access Management Access Analyzer (IAM Access Analyzer) によって管理されるアナライザーに、 パラメータ requiredTagKeys で定義された特定のキーを持つタグがあるかどうかをチェックします。アナライザーにタグキーがない場合、またはパラメータ requiredTagKeys で指定されたすべてのキーがない場合、コントロールは失敗します。パラメータ requiredTagKeys が指定されていない場合、コントロールはタグキーの存在のみをチェックし、アナライザーにキーがタグ付けされていない場合は失敗します。自動的に適用され、aws: で始まるシステムタグは無視されます。
タグは AWS リソースに割り当てることができるラベルで、各タグはキーとオプションの値で構成されます。タグを作成することで、リソースを目的、所有者、環境その他の基準別に分類できます。タグは、リソースの識別、整理、検索、フィルタリングに役立ちます。タグ付けは、アクションと通知の説明責任のあるリソース所有者を追跡するのに役立ちます。タグ付けを使用する場合、タグに基づいてアクセス許可を定義する認証戦略として属性ベースのアクセスコントロール (ABAC) を実装できます。タグは、IAM エンティティ (ユーザーまたはロール)、および AWS リソースにアタッチできます。IAM プリンシパルに対して、単一の ABAC ポリシー、または個別のポリシーセットを作成できます。これらの ABAC ポリシーを、プリンシパルのタグがリソースタグと一致するときに操作を許可するように設計することができます。ABAC の詳細については、「IAM ユーザーガイド」の「What is ABAC for AWS?」を参照してください。
注記
タグには、個人を特定できる情報 (PII) や、機密情報あるいは秘匿性の高い情報は追加しないでください。タグは、AWS Billing を含む多くの AWS のサービス からアクセスできます。タグ付けのベストプラクティスの詳細については、「AWS 全般のリファレンス」の「AWS リソースのタグ付け」を参照してください。
修正
アナライザーにタグを追加するには、「AWS IAM Access Analyzer API リファレンス」の「TagResource」を参照してください。
[IAM.24] IAM ロールにはタグを付ける必要があります
カテゴリ: 識別 > インベントリ > タグ付け
重要度: 低
リソースタイプ :AWS::IAM::Role
AWS Config ルール: tagged-iam-role (カスタム Security Hub ルール)
スケジュールタイプ : 変更がトリガーされた場合
パラメータ :
| パラメータ | 説明 | [Type] (タイプ) | 許可されているカスタム値 | Security Hub のデフォルト値 |
|---|---|---|---|---|
requiredTagKeys
|
評価されたリソースに含める必要があるシステム以外のタグキーのリスト。タグキーでは、大文字と小文字が区別されます。 | StringList (最大 6 項目) | AWS 要件を満たす 1~6 個のタグキー。 |
No default value
|
このコントロールは、 AWS Identity and Access Management (IAM) ロールにパラメータ requiredTagKeys で定義された特定のキーを持つタグがあるかどうかをチェックします。ロールにタグキーがない場合、またはパラメータ requiredTagKeys で指定されたすべてのキーがない場合、コントロールは失敗します。パラメータ requiredTagKeys が指定されていない場合、コントロールはタグキーの存在のみをチェックし、ロールにキーがタグ付けされていない場合は失敗します。自動的に適用され、aws: で始まるシステムタグは無視されます。
タグは AWS リソースに割り当てることができるラベルで、各タグはキーとオプションの値で構成されます。タグを作成することで、リソースを目的、所有者、環境その他の基準別に分類できます。タグは、リソースの識別、整理、検索、フィルタリングに役立ちます。タグ付けは、アクションと通知の説明責任のあるリソース所有者を追跡するのに役立ちます。タグ付けを使用する場合、タグに基づいてアクセス許可を定義する認証戦略として属性ベースのアクセスコントロール (ABAC) を実装できます。タグは、IAM エンティティ (ユーザーまたはロール)、および AWS リソースにアタッチできます。IAM プリンシパルに対して、単一の ABAC ポリシー、または個別のポリシーセットを作成できます。これらの ABAC ポリシーを、プリンシパルのタグがリソースタグと一致するときに操作を許可するように設計することができます。ABAC の詳細については、「IAM ユーザーガイド」の「What is ABAC for AWS?」を参照してください。
注記
タグには、個人を特定できる情報 (PII) や、機密情報あるいは秘匿性の高い情報は追加しないでください。タグは、AWS Billing を含む多くの AWS のサービス からアクセスできます。タグ付けのベストプラクティスの詳細については、「AWS 全般のリファレンス」の「AWS リソースのタグ付け」を参照してください。
修正
IAM ロールにタグを追加するには、「IAM ユーザーガイド」の「IAM リソースのタグ付け」を参照してください。
[IAM.25] IAM ユーザーにはタグを付ける必要があります
カテゴリ: 識別 > インベントリ > タグ付け
重要度: 低
リソースタイプ :AWS::IAM::User
AWS Config ルール: tagged-iam-user (カスタム Security Hub ルール)
スケジュールタイプ : 変更がトリガーされた場合
パラメータ :
| パラメータ | 説明 | [Type] (タイプ) | 許可されているカスタム値 | Security Hub のデフォルト値 |
|---|---|---|---|---|
requiredTagKeys
|
評価されたリソースに含める必要があるシステム以外のタグキーのリスト。タグキーでは、大文字と小文字が区別されます。 | StringList (最大 6 項目) | AWS 要件を満たす 1~6 個のタグキー。 |
No default value
|
このコントロールは、 AWS Identity and Access Management (IAM) ユーザーにパラメータ requiredTagKeys で定義された特定のキーを持つタグがあるかどうかをチェックします。ユーザーにタグキーがない場合、またはパラメータ requiredTagKeys で指定されたすべてのキーがない場合、コントロールは失敗します。パラメータ requiredTagKeys が指定されていない場合、コントロールはタグキーの存在のみをチェックし、ユーザーがキーでタグ付けされていない場合は失敗します。自動的に適用され、aws: で始まるシステムタグは無視されます。
タグは AWS リソースに割り当てることができるラベルで、各タグはキーとオプションの値で構成されます。タグを作成することで、リソースを目的、所有者、環境その他の基準別に分類できます。タグは、リソースの識別、整理、検索、フィルタリングに役立ちます。タグ付けは、アクションと通知の説明責任のあるリソース所有者を追跡するのに役立ちます。タグ付けを使用する場合、タグに基づいてアクセス許可を定義する認証戦略として属性ベースのアクセスコントロール (ABAC) を実装できます。タグは、IAM エンティティ (ユーザーまたはロール)、および AWS リソースにアタッチできます。IAM プリンシパルに対して、単一の ABAC ポリシー、または個別のポリシーセットを作成できます。これらの ABAC ポリシーを、プリンシパルのタグがリソースタグと一致するときに操作を許可するように設計することができます。ABAC の詳細については、「IAM ユーザーガイド」の「What is ABAC for AWS?」を参照してください。
注記
タグには、個人を特定できる情報 (PII) や、機密情報あるいは秘匿性の高い情報は追加しないでください。タグは、AWS Billing を含む多くの AWS のサービス からアクセスできます。タグ付けのベストプラクティスの詳細については、「AWS 全般のリファレンス」の「AWS リソースのタグ付け」を参照してください。
修正
IAM ユーザーにタグを追加するには、「IAM ユーザーガイド」の「IAM リソースのタグ付け」を参照してください。
[IAM.26] IAM で管理されている期限切れの SSL/TLS 証明書は削除する必要があります
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.18、CIS AWS Foundations Benchmark v3.0.0/1.19
カテゴリ: 識別 > コンプライアンス
重要度: 中
リソースタイプ :AWS::IAM::ServerCertificate
AWS Config ルール :iam-server-certificate-expiration-check
スケジュールタイプ: 定期的
パラメータ : なし
このコントロールは、IAM で管理されているアクティブな SSL/TLS サーバー証明書の有効期限が切れているかどうかを確認します。期限切れの SSL/TLS サーバー証明書が削除されない場合、コントロールは失敗します。
ウェブサイトまたは AWS のアプリケーションへの HTTPS 接続を有効にするには、SSL/TLS サーバー証明書が必要です。IAM または AWS Certificate Manager (ACM) を使用して、サーバー証明書を保存およびデプロイできます。ACM でサポートされていない AWS リージョン で HTTPS 接続をサポートする必要があるときにのみ、Certificate Manager として IAM を使用してください。IAM はプライベートキーを安全に暗号化し、暗号化されたバージョンを IAM SSL 証明書ストレージに保存します。IAM はすべてのリージョンでのサーバー証明書のデプロイをサポートしますが、AWS で使用するには、外部プロバイダーから証明書を取得する必要があります。ACM 証明書を IAM にアップロードすることはできません。また、IAM コンソールから証明書を管理することはできません。期限切れの SSL/TLS 証明書を削除すると、基盤となるアプリケーションやウェブサイトの信頼性を損うような、無効な証明書が誤ってリソースにデプロイされるといったリスクがなくなります。
修正
IAM からサーバー証明書を削除するには、「IAM ユーザーガイド」の「IAM でのサーバー証明書の管理」を参照してください。
[IAM.27] IAM ID に AWSCloudShellFullAccess ポリシーをアタッチしないでください
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.21、CIS AWS Foundations Benchmark v3.0.0/1.22
カテゴリ: 保護 > セキュアなアクセス管理 > セキュアな IAM ポリシー
重要度: 中
リソースタイプ: AWS::IAM::Role、AWS::IAM::User、AWS::IAM::Group
AWS Config ルール :iam-policy-blacklisted-check
スケジュールタイプ: 変更がトリガーされた場合
パラメータ :
"policyArns": "arn:aws:iam::aws:policy/AWSCloudShellFullAccess,arn:aws-cn:iam::aws:policy/AWSCloudShellFullAccess, arn:aws-us-gov:iam::aws:policy/AWSCloudShellFullAccess"
このコントロールは、IAM ID (ユーザー、ロール、またはグループ) に AWS マネージドポリシー AWSCloudShellFullAccess がアタッチされているかどうかを確認します。IAM ID に AWSCloudShellFullAccess ポリシーがアタッチされている場合、コントロールは失敗します。
AWS CloudShell は、AWS のサービス に対して CLI コマンドを実行する便利な方法を提供します。AWS マネージドポリシー AWSCloudShellFullAccess は CloudShell へのフルアクセスを提供し、ユーザーのローカルシステムと CloudShell 環境間のファイルのアップロードとダウンロードが可能になります。CloudShell 環境内では、ユーザーは sudo アクセス許可を持ち、インターネットにアクセスできます。その結果、このマネージドポリシーを IAM ID にアタッチすることで、ファイル転送ソフトウェアをインストールし、データを CloudShell から外部のインターネットサーバーに移動できます。最小特権の原則に従い、IAM ID に狭いアクセス許可をアタッチすることをお勧めします。
修正
IAM ID から AWSCloudShellFullAccess ポリシーをデタッチするには、「IAM ユーザーガイド」の「IAM ID アクセス許可の追加と削除」を参照してください。
[IAM.28] IAM Access Analyzer 外部アクセスアナライザーを有効にする必要があります
関連する要件: CIS AWS Foundations Benchmark v5.0.0/1.19、CIS AWS Foundations Benchmark v3.0.0/1.20
カテゴリ: 検出 > 検出サービス > 特権使用状況モニタリング monitoring
重要度: 高
リソースタイプ :AWS::AccessAnalyzer::Analyzer
AWS Config ルール :iam-external-access-analyzer-enabled
スケジュールタイプ: 定期的
パラメータ : なし
このコントロールは、 AWS アカウント で IAM Access Analyzer 外部アクセスアナライザーが有効になっているかどうかを確認します。現在選択されている AWS リージョン で外部アクセスアナライザーが有効になっていない場合、コントロールは失敗します。
IAM Access Analyzer 外部アクセスアナライザーは、外部エンティティと共有されている Amazon Simple Storage Service (Amazon S3) バケットや IAM ロールなどのリソースを識別するのに役立ちます。これは、リソースやデータへの意図しないアクセスを回避するのに役立ちます。IAM Access Analyzer はリージョン別であり、各リージョンで有効にする必要があります。外部プリンシパルと共有されているリソースを識別するために、アクセスアナライザーは、ロジックベースの推論を使用して AWS 環境のリソースベースのポリシーを分析します。外部アクセスアナライザー作成するときに、組織全体または個々のアカウントに対してアナライザーを作成して有効にすることができます。
注記
アカウントが AWS Organizations の組織の一部である場合、このコントロールでは、組織を信頼ゾーンとして指定していて、現在のリージョンの組織に対して有効になっている外部アクセスアナライザーは考慮しません。組織がこのタイプの設定を使用している場合は、リージョンの組織内の個々のメンバーアカウントに対してこのコントロールを無効にすることを検討してください。
修正
特定のリージョンで外部アクセスアナライザーを有効にする方法については、「IAM ユーザーガイド」の「IAM Access Analyzer の開始方法」を参照してください。アナライザーは、リソースへのアクセスをモニタリングするリージョンごとに有効にする必要があります。