AWS KMS の Security Hub コントロール
これらの AWS Security Hub CSPM コントロールは、 AWS Key Management Service (AWS KMS) サービスとリソースを評価します。コントロールは、すべての AWS リージョン で使用できるとは限りません。詳細については、「リージョン別のコントロールの可用性」を参照してください。
[KMS.1] IAM カスタマー管理ポリシーでは、すべての KMS キーの復号アクションを許可しないでください
関連する要件: 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(3)
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :AWS::IAM::Policy
AWS Config ルール :iam-customer-policy-blocked-kms-actions
スケジュールタイプ: 変更がトリガーされた場合
パラメータ :
-
blockedActionsPatterns: kms:ReEncryptFrom, kms:Decrypt(カスタマイズ不可) -
excludePermissionBoundaryPolicy:True(カスタマイズ不可)
IAM カスタマーマネージドポリシーのデフォルトバージョンで、プリンシパルにすべてのリソースに対する AWS KMS 復号化アクションの使用を許可しているかどうかをチェックします。ポリシーがすべての KMS キーに対して kms:Decrypt または kms:ReEncryptFrom のアクションを許可するのに十分にオープンな場合、このコントロールは失敗します。
コントロールはリソース要素の KMS キーのみをチェックし、ポリシーの Condition 要素の条件は考慮しません。このコントロールは、添付済みのカスタマーマネージドポリシーと添付されていないカスタマーマネージドポリシーの両方を評価します。インラインポリシーまたは AWS マネージドポリシーのチェックは行いません。
AWS KMS を使用すると、KMS キーを使用して、暗号化済みのデータにアクセスできるユーザーをコントロールできます。IAM ポリシーは、アイデンティティ (ユーザー、グループ、またはロール) がどのリソースに対してどのアクションを実行できるかを定義します。セキュリティのベストプラクティスに従い、AWS は、最小特権を許可することを推奨します。つまり、ID に付与するのは kms:Decrypt または kms:ReEncryptFrom 許可と、タスクの実行に必要なキーのみにする必要があります。そうでない場合、ユーザーはデータに適さないキーを使用する可能性があります。
すべてのキーに対する許可を付与する代わりに、ユーザーが暗号化されたデータにアクセスするために必要な最小限のキーのセットを決定します。次に、ユーザーがそれらのキーのみを使用できるようにするポリシーを設計します。例えば、すべての KMS キーに kms:Decrypt 許可を付与しないでください。代わりに、アカウントの特定のリージョン内のキーのみに kms:Decrypt を許可します。最小特権のプリンシパルを採用することで、意図しないデータ開示のリスクを減らすことができます。
修正
IAM カスタマー管理ポリシーを変更するには、「IAM ユーザーガイド」の「カスタマー管理ポリシーの編集」を参照してください。Resource フィールドのポリシーを編集する際、復号化アクションを許可する特定の 1 つまたは複数キーの Amazon リソースネーム (ARN) を指定します。
[KMS.2] IAM プリンシパルは、すべての KMS キーで復号アクションを許可する 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(3)
カテゴリ: 保護 > セキュアなアクセス管理
重要度: 中
リソースタイプ :
-
AWS::IAM::Group -
AWS::IAM::Role -
AWS::IAM::User
AWS Config ルール :iam-inline-policy-blocked-kms-actions
スケジュールタイプ: 変更がトリガーされた場合
パラメータ :
-
blockedActionsPatterns: kms:ReEncryptFrom, kms:Decrypt(カスタマイズ不可)
IAM アイデンティティ (ロール、ユーザー、またはグループ) に埋め込まれたインラインポリシーですべての KMS キーに対する AWS KMS 復号と再暗号化アクションが許可されているかどうかをチェックします。ポリシーがすべての KMS キーに対して kms:Decrypt または kms:ReEncryptFrom のアクションを許可するのに十分にオープンな場合、このコントロールは失敗します。
コントロールはリソース要素の KMS キーのみをチェックし、ポリシーの Condition 要素の条件は考慮しません。
AWS KMS を使用すると、KMS キーを使用して、暗号化済みのデータにアクセスできるユーザーをコントロールできます。IAM ポリシーは、アイデンティティ (ユーザー、グループ、またはロール) がどのリソースに対してどのアクションを実行できるかを定義します。セキュリティのベストプラクティスに従い、AWS は、最小特権を許可することを推奨します。つまり、ID には必要な許可のみを、タスクの実行に必要なキーにのみ付与する必要があります。そうでない場合、ユーザーはデータに適さないキーを使用する可能性があります。
すべてのキーに対する許可を付与する代わりに、ユーザーが暗号化されたデータにアクセスするために必要なキーの最小セットを決定します。次に、ユーザーがそれらのキーのみを使用できるようにするポリシーを設計します。例えば、すべての KMS キーに kms:Decrypt 許可を付与しないでください。代わりに、アカウントの特定リージョンでの特定のキーにのみ許可を付与してください。最小特権のプリンシパルを採用することで、意図しないデータ開示のリスクを減らすことができます。
修正
IAM インラインポリシーを変更するには、「IAM ユーザーガイド」の「インラインポリシーの編集」を参照してください。Resource フィールドのポリシーを編集する際、復号化アクションを許可する特定の 1 つまたは複数キーの Amazon リソースネーム (ARN) を指定します。
[KMS.3] AWS KMS keys キーを意図せずに削除してはいけません
関連する要件: NIST.800-53.r5 SC-12、NIST.800-53.r5 SC-12(2)
カテゴリ: 保護 > データ保護 > データ削除保護
重要度: 非常事態
リソースタイプ :AWS::KMS::Key
AWS Config ルール: kms-cmk-not-scheduled-for-deletion-2 (カスタム Security Hub ルール)
スケジュールタイプ : 変更がトリガーされた場合
パラメータ : なし
このコントロールは、KMS キーの削除がスケジュール済みかどうかをチェックします。KMS キーの削除がスケジュール済みの場合、コントロールは失敗します。
KMS キーは、一度削除すると復元できません。KMS キーで暗号化されたデータも、KMS キーが削除された場合は永久に回復できません。意味のあるデータが削除予定の KMS キーで暗号化されている場合は、意図的に 暗号化消去 を実行していない限り、データを復号化するか、新しい KMS キーでデータを再暗号化することを検討してください。
KMS キーの削除がスケジュール済みで、誤ってスケジュールされた場合、削除の取り消し時間を確保するために、強制的に待ち時間が適用されます。デフォルトの待機期間は 30 日間ですが、KMS キーの削除がスケジュールされている場合は 7 日以内に短縮できます。待機期間中、スケジュール済みの削除はキャンセルすることができ、KMS キーは削除されません。
KMS キーの削除の詳細については、「AWS Key Management Serviceデベロッパーガイド」の「KMS キーの削除」を参照してください。
修正
スケジュール済み KMS キーの削除をキャンセルには、「AWS Key Management Service デベロッパーガイド」の「キー削除のスケジュールとキャンセル (コンソール)」内にある「キーの削除をキャンセルするには」を参照してください。
[KMS.4] AWS KMS キーのローテーションを有効にする必要があります
関連する要件: CIS AWS Foundations Benchmark v5.0.0/3.6、CIS AWS Foundations Benchmark v3.0.0/3.6、CIS AWS Foundations Benchmark v1.4.0/3.8、CIS AWS Foundations Benchmark v1.2.0/2.8、NIST.800-53.r5 SC-12、NIST.800-53.r5 SC-12(2)、NIST.800-53.r5 SC-28(3)、PCI DSS v3.2.1/3.6.4、PCI DSS v4.0.1/3.7.4
カテゴリ: 保護 > データ保護 > 保管中のデータの暗号化
重要度: 中
リソースタイプ :AWS::KMS::Key
AWS Config ルール :cmk-backing-key-rotation-enabled
スケジュールタイプ: 定期的
パラメータ : なし
AWS KMS では、お客様はバッキングキーをローテーションすることができます。バッキングキーは、AWS KMS に保存されているキーマテリアルであり、KMS キーのキー ID に関連付けられています。バッキングキーは、暗号化や復号化などの暗号化オペレーションを実行するために使用されます。現在、キーの自動ローテーションでは以前のすべてのバッキングキーが保持されるため、暗号化したデータは透過的に復号化できます。
CIS では、KMS キーのローテーションを有効にすることを推奨しています。新しいキーで暗号化されたデータは、漏洩した可能性がある以前のキーではアクセスできないため、暗号化キーをローテーションすることで、漏洩したキーにより起こる可能性のある被害を減らすことができます。
修正
KMS キーローテーションを有効にするには、「AWS Key Management Service デベロッパーガイド」の「自動キーローテーションを有効または無効にする方法」を参照してください。
[KMS.5] KMS キーはパブリックにアクセスしないでください
カテゴリ: 保護 > セキュアなネットワーク設定 > パブリックアクセス不可のリソース
重要度: 非常事態
リソースタイプ :AWS::KMS::Key
AWS Config ルール :kms-key-policy-no-public-access
スケジュールタイプ: 変更がトリガーされた場合
パラメータ : なし
このコントロールは、AWS KMS key がパブリックにアクセス可能かどうかをチェックします。KMS キーがパブリックにアクセス可能な場合、コントロールは失敗します。
最小特権アクセスの実装は、セキュリティリスクおよびエラーの影響や悪意ある行動を減らす上での基礎となります。AWS KMS key のキーポリシーで外部アカウントからのアクセスを許可している場合、第三者がキーを使用してデータを暗号化および復号できる可能性があります。そのため、キーを使用する内部または外部の脅威によって AWS のサービス からデータが流出するおそれがあります。
注記
このコントロールは、設定で AWS Config が KMS キーの設定項目 (CI) にキーポリシーを記録できないようになっている場合、AWS KMS key に対して FAILED 検出結果を返します。AWS Config が KMS キーの CI にキーポリシーを入力するには、AWS Config ロールに GetKeyPolicy API コールを使用してキーポリシーを読み取るためのアクセス権が必要です。このタイプの FAILED 検出結果を解決するには、AWS Config ロールが KMS キーのキーポリシーに読み取りアクセスできないようにしているポリシーをチェックします。たとえば、次のものをチェックします。
-
KMS キーのキーポリシー。
-
アカウントに適用される AWS Organizations のサービスコントロールポリシー (SCP) とリソースコントロールポリシー (RCP)。
-
AWS Config サービスにリンクされたロールを使用していない場合は、AWS Config ロールのアクセス許可。
さらに、このコントロールはワイルドカード文字または変数を使用するポリシー条件を評価しません。PASSED 検出結果を生成するには、キーポリシーの条件は固定値のみを使用する必要があります。固定値は、ワイルドカード文字やポリシー変数を含まない値です。ポリシー変数に関する詳細については、「AWS Identity and Access Management ユーザーガイド」の「変数およびタグ」を参照してください。
修正
AWS KMS key のキーポリシー更新の詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS KMS のキーポリシー」を参照してください。