加密日志 - Amazon EMR

加密日志

使用托管存储加密 EMR Serverless 日志

要使用您自己的 KMS 密钥加密托管存储中的日志,请在提交作业运行时使用 managedPersistenceMonitoringConfiguration 配置。

{ "monitoringConfiguration": { "managedPersistenceMonitoringConfiguration" : { "encryptionKeyArn": "key-arn" } } }

使用 Amazon S3 存储桶加密 EMR Serverless 日志

要使用您自己的 KMS 密钥加密 Amazon S3 存储桶中的日志,请在提交作业运行时使用 s3MonitoringConfiguration 配置。

{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket/logs/", "encryptionKeyArn": "key-arn" } } }

使用 Amazon CloudWatch 加密 EMR Serverless 日志

要使用您自己的 KMS 密钥加密 Amazon CloudWatch 中的日志,请在提交作业运行时使用 cloudWatchLoggingConfiguration 配置。

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true, "encryptionKeyArn": "key-arn" } } }

日志加密所需的权限

所需的用户权限

提交作业、查看日志或应用程序 UI 的用户必须具有使用密钥的权限。您可以在 KMS 密钥政策或 IAM 策略中为用户、组或角色指定权限。如果提交作业的用户没有 KMS 密钥权限,EMR Serverless 会拒绝提交作业运行。

示例密钥政策

以下密钥政策提供了对 kms:GenerateDataKeykms:Decrypt 的权限:

{ "Effect": "Allow", "Principal":{ "AWS": "arn:aws:iam::111122223333:user/user-name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }

示例 IAM policy

以下 IAM 策略提供了对 kms:GenerateDataKeykms:Decrypt 的权限:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "key-arn" } }

要启动 Spark 或 Tez UI,您必须授予用户、组或角色访问 emr-serverless:GetDashboardForJobRun API 的权限,如下所示:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "emr-serverless:GetDashboardForJobRun" ] } }

Amazon S3 和托管存储的加密密钥权限

在托管存储或 S3 存储桶中使用自己的加密密钥加密日志时,必须按如下方式配置 KMS 密钥权限。

在 KMS 密钥政策中,emr-serverless.amazonaws.com 主体必须具有以下权限:

{ "Effect": "Allow", "Principal":{ "Service": "emr-serverless.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:emr-serverless:region:aws-account-id:/applications/application-id" } } }

作为安全最佳实践,建议在 KMS 密钥政策中添加 aws:SourceArn 条件键。IAM 全局条件键 aws:SourceArn 可确保 EMR Serverless 仅将 KMS 密钥用于应用程序 ARN。

作业运行时角色必须在其 IAM 策略中具有以下权限:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "key-arn" } }

Amazon CloudWatch 的加密密钥权限

要将 KMS 密钥 ARN 关联到日志组,请对作业运行时角色使用以下 IAM 策略。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "logs:AssociateKmsKey" ], "Resource": [ "arn:aws:logs:AWS 区域:111122223333:log-group:my-log-group-name:*" ] } }

配置 KMS 密钥政策以向 Amazon CloudWatch 授予 KMS 权限:

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.AWS 区域.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:AWS 区域:111122223333:*" } } } }