【Security Hub修復手順】[EMR.3] Amazon EMR セキュリティ設定は保管時に暗号化する必要があります
こんにちは、あかいけです。
皆さん、お使いのAWS環境のセキュリティチェックはしていますか?
当エントリでは、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介します。
本記事の対象コントロール
[EMR.3] Amazon EMR security configurations should be encrypted at rest
[EMR.3] Amazon EMR セキュリティ設定は保管時に暗号化する必要があります
前提条件
本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。
AWS Security Hubの詳細についてはこちらのブログをご覧ください。
対象コントロールの説明
Amazon EMR セキュリティ設定にて、保管中の暗号化が有効化されているかどうかをチェックします。
本コントロールはEMRクラスター自体の設定状況をチェックするのではなく、
あくまでセキュリティ設定の設定状況をチェックしているという点に注意が必要です。
データ管理はユーザー側の責任であるため、基本的には保管時の暗号化は必須です。
ただし、重要データを扱わない場合や本番環境以外であれば必須ではありません。
またEMRのセキュリティ設定において、保管中の暗号化は以下の二種類があります。
- Amazon S3 へのデータ保存時の暗号化 (S3 data encryption)
- ローカルディスクへのデータ保存時の暗号化 (Local disk encryption)
本コントロールの成功/失敗については、
どちらか一方、または両方の暗号化が有効化されていれば成功、
逆に両方の暗号化が無効化されている場合は失敗します。
以下はこの挙動についての調査結果です。
長いので折りたたんでいますが、気になる方は見てみて下さい。
本コントロールの挙動について
なぜこのような挙動になるのか調べてみたところ、
セキュリティ設定の仕様によるものでした。
まずSecurity Hub コントロール EMR.3 は、
AWS Config ルール emr-security-configuration-encryption-rest の実行結果を参照しています。
このConfig ルールはセキュリティ設定の設定項目である、
EnableAtRestEncryption が false かどうかチェックします。
セキュリティ設定を参照してみるとEnableAtRestEncryptionという設定項目がありますが、
保管時の暗号化に関する具体的な設定項目は以下が担当していることがわかります。
- AtRestEncryptionConfiguration
- S3EncryptionConfiguration
- LocalDiskEncryptionConfiguration
{
"Name": "encryption-enable-security-config",
"SecurityConfiguration": {
"EncryptionConfiguration": {
"EnableAtRestEncryption": true,
"AtRestEncryptionConfiguration": {
"S3EncryptionConfiguration": {
"EncryptionMode": "SSE-S3"
},
"LocalDiskEncryptionConfiguration": {
"EncryptionKeyProviderType": "AwsKms",
"AwsKmsKey": "arn:aws:kms:ap-northeast-1:XXXXXXXXXXXX:alias/kms-alias",
"EnableEbsEncryption": true
}
},
"EnableInTransitEncryption": false
},
"InstanceMetadataServiceConfiguration": {
"MinimumInstanceMetadataServiceVersion": 2,
"HttpPutResponseHopLimit": 1
}
},
"CreationDateTime": "2025-01-01T00:00:00.0000000+09:00"
}
また以下ドキュメントを確認したところ、EnableAtRestEncryptionは保管時の暗号化に有効にするためのフラグのような役割だと考えられます。
結論として、EnableAtRestEncryptionの値は、
S3EncryptionConfiguration またはLocalDiskEncryptionConfiguration の少なくとも一方を設定するためにtrueと設定する必要があります。
そのため両方の設定がされていなくても本コントロールは成功します。
修復手順
まず、EMRのセキュリティ設定は作成後に設定変更することができません。
そのため既存のセキュリティ設定をクローン、
または新規作成して暗号化を有効にしたセキュリティ設定を作成する必要があります。
なお起動中のEMRクラスターのセキュリティ設定の付け替えはできないため、
クラスター作成時に適用することとなります。
1.KMSカスタマー管理型キー 作成
今回は保管時の暗号化にKMSカスタマー管理型キー利用するので作成します。
EMRは対称KMSキーのみサポートしているので、キータイプは対称を選びます。
エイリアスはお好みで設定して下さい。
キーユーザーとしてEMR用のIAMロールを指定します。
以下ではデフォルトIAMロールを指定していますが、各自実際に利用するIAMロールを指定して下さい。
残りの項目はデフォルト値で作成します。
2.セキュリティ設定 作成
今回は既存のセキュリティ設定をクローンして作成してみます。
元となるのは以下の全ての暗号化を有効化していないセキュリティ設定です。
右上の「クローン」をクリックします。
Amazon S3へのデータ保存時の暗号化はSSE-S3も利用できますが、
今回はSSE-KMSで先ほど作成したKMSキーを指定します。
ローカルディスクへのデータ保存時の暗号化も同様に、
先ほど作成したKMSキーを指定します。
作成完了後、詳細から各種暗号化が設定されていることが確認できます。
またSecurity Hubの該当のコントロールを確認すると、
新しく作成したセキュリティ設定はパスしていることが確認できます。
あとは新規作成したセキュリティ設定を指定して、EMRクラスターを作成して動作確認を進めて下さい。
動作確認をして問題がなければ、古いセキュリティ設定は削除しましょう。
最後に
今回は、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介しました。
コントロールを修正して、お使いのAWS環境のセキュリティをパワーアップさせましょう。
最後までお読みいただきありがとうございました!どなたかのお役に立てれば幸いです。