AWS sagemaker-unified-studio medium security documentation change
Summary
Added detailed KMS key policy JSON template with granular permissions for Amazon Bedrock integration with SageMaker and DataZone
Security assessment
The change introduces a comprehensive KMS key policy that defines least-privilege access controls for encryption operations. It specifically addresses security by: 1) Limiting encryption context to specific domains and services 2) Implementing principal tagging conditions 3) Restricting via-service usage to S3 and SecretsManager 4) Enforcing Bedrock-specific encryption context patterns. These are security controls to prevent unauthorized decryption of sensitive resources.
Diff
diff --git a/sagemaker-unified-studio/latest/adminguide/amazon-bedrock-key-permissions.md b/sagemaker-unified-studio/latest/adminguide/amazon-bedrock-key-permissions.md index 10a4a681e..881644c7a 100644 --- a//sagemaker-unified-studio/latest/adminguide/amazon-bedrock-key-permissions.md +++ b//sagemaker-unified-studio/latest/adminguide/amazon-bedrock-key-permissions.md @@ -8,0 +9,214 @@ +JSON + + +**** + + + { + "Version":"2012-10-17", + "Statement": [ + { + "Sid": "Allow administrators to manage key", + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam::444455556666:role/ExampleAdminRole" + }, + "Action": [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:TagResource", + "kms:UntagResource", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:RotateKeyOnDemand" + ], + "Resource": "*" + }, + { + "Sid": "Allow administrators and SageMaker domain execution role to encrypt and decrypt DataZone data", + "Effect": "Allow", + "Principal": { + "AWS": [ + "arn:aws:iam::444455556666:role/ExampleAdminRole", + "arn:aws:iam::444455556666:role/ExampleDomainUser", + "arn:aws:iam::111122223333:role/service-role/AmazonSageMakerDomainExecution" + ] + }, + "Action": [ + "kms:CreateGrant", + "kms:Decrypt", + "kms:GenerateDataKey" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "kms:EncryptionContext:aws:datazone:DOMAIN_ID": "domain_id" + } + } + }, + { + "Sid": "Allow SageMaker provisioning role to encrypt and decrypt Amazon Bedrock resources", + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMakerProvisioning-111122223333" + }, + "Action": [ + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:Encrypt", + "kms:GenerateDataKey" + ], + "Resource": "*" + }, + { + "Sid": "Allow SageMaker project roles to describe key", + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam::111122223333:root" + }, + "Action": "kms:DescribeKey", + "Resource": "*", + "Condition": { + "Null": { + "aws:PrincipalTag/AmazonDataZoneProject": "false" + } + } + }, + { + "Sid": "Allow SageMaker project roles to encrypt and decrypt data in Tooling blueprint S3 bucket", + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam::111122223333:root" + }, + "Action": [ + "kms:Decrypt", + "kms:GenerateDataKey" + ], + "Resource": "*", + "Condition": { + "Null": { + "aws:PrincipalTag/AmazonDataZoneProject": "false" + }, + "StringLike": { + "kms:ViaService": "s3.*.amazonaws.com" + } + } + }, + { + "Sid": "Allow SageMaker project roles to encrypt and decrypt Amazon Bedrock secrets", + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam::111122223333:root" + }, + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:GenerateDataKey" + ], + "Resource": "*", + "Condition": { + "Null": { + "aws:PrincipalTag/AmazonDataZoneProject": "false" + }, + "StringLike": { + "kms:ViaService": "secretsmanager.*.amazonaws.com" + }, + "ArnLike": { + "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:*:*:secret:amazon-bedrock*" + } + } + }, + { + "Sid": "Allow SageMaker project roles to encrypt and decrypt Amazon Bedrock data", + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam::111122223333:root" + }, + "Action": [ + "kms:Decrypt", + "kms:GenerateDataKey" + ], + "Resource": "*", + "Condition": { + "Null": { + "aws:PrincipalTag/AmazonDataZoneProject": "false" + }, + "ForAnyValue:StringLike": { + "kms:EncryptionContextKeys": [ + "aws:bedrock*", + "evaluationJobArn" + ] + } + } + }, + { + "Sid": "Allow Amazon Bedrock to encrypt and decrypt Amazon Bedrock data", + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + }, + "Action": [ + "kms:Decrypt", + "kms:GenerateDataKey" + ], + "Resource": "*", + "Condition": { + "ForAnyValue:StringLike": { + "kms:EncryptionContextKeys": [ + "aws:bedrock*", + "evaluationJobArn" + ] + } + } + }, + { + "Sid": "Allow Amazon Bedrock to create and revoke grants for Amazon Bedrock resources", + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + }, + "Action": [ + "kms:CreateGrant", + "kms:ListGrants", + "kms:RevokeGrant" + ], + "Resource": "*", + "Condition": { + "Bool": { + "kms:GrantIsForAWSResource": "true" + } + } + }, + { + "Sid": "Allow CloudWatch Logs to encrypt and decrypt Amazon Bedrock log groups", + "Effect": "Allow", + "Principal": { + "Service": "logs.amazonaws.com"