Openflow BYOC – 设置加密 EBS 卷¶
本主题介绍了使用以下方法之一,设置带加密 Elastic Block Storage (EBS) 卷的 Openflow BYOC 部署的步骤:
这两种方案都提供了加密的 EBS 卷,可满足 Openflow BYOC 的以下存储需求:
Openflow Agent EC2 实例的根卷
每个 EKS 集群节点组中的 EC2 实例的根卷
Openflow 运行时和支持组件的持续卷
备注
$AWS_ACCOUNT_ID表示部署 Openflow 所在账户的 AWS 账户 ID。$AWS_REGION表示账户的 AWS 区域,例如us-west-2。$AWS_KMS_KEY_ARN表示 Openflow 将用于加密 EBS 卷的 Amazon Key Management Service (AWS KMS) 密钥的 Amazon 资源名称 (ARN)。$DEPLOYMENT_KEY表示 Openflow 为特定部署创建并托管的云资源所使用的 Openflow 唯一标识符。该信息位于 CloudFormation 模板的DataPlaneKey参数中,也可以通过 Openflow 中部署的 View Details 菜单选项查看。
先决条件¶
本主题假定您已完成设置 Openflow BYOC 的先决条件。有关更多信息,请参阅 设置 Openflow - BYOC。
您还必须拥有 Openflow 用于加密 EBS 卷的 AWS KMS 密钥访问权限。
提供用于加密 EBS 卷的特定 AWS KMS 密钥。¶
在上传用于 Openflow BYOC 部署的 CloudFormation 模板时,您可以提供 Openflow 用于加密 EBS 卷的 AWS KMS 密钥的 ARN。
使用此配置,Openflow 会请求加密的 EBS 卷,从而确保满足所有 SCP 策略要求。Snowflake 建议大多数客户采用这种方法。
这样可以为不同的应用程序使用不同的 KMS 密钥,从而降低单个密钥被泄露的风险。
要确保 Openflow 拥有使用该密钥的必要权限,请执行以下任务:
确保 AWS KMS 密钥向 AWS Autoscaling Service Role 授予了相应的权限。密钥策略必须包含以下语句:
{ "Sid": "Allow Autoscaling to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::$AWS_ACCOUNT_ID:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" }, "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
在上传模板时,将 AWS KMS 密钥的 ARN 输入 CloudFormation 堆栈的
EBSKMSKeyArn参数中。例如
arn:aws:kms:$AWS_REGION:$AWS_ACCOUNT_ID:key/1a1a11aa-aa1a-aaa1a-a1a1-000000000000。上传 CloudFormation 模板大约 20 分钟后,Openflow BYOC 部署会创建一个名为
$DEPLOYMENT_KEY-eks-role的新 IAM 角色。在 KMS 密钥策略中添加以下语句,以授予 Openflow 使用该密钥的权限:
{ "Sid": "Allow Openflow Deployment to encrypt EBS volumes", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::$AWS_ACCOUNT_ID:role/$DEPLOYMENT_KEY-eks-role" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" }
Openflow 会自动检测 KMS 密钥的新权限,并继续安装流程。大约 20 分钟后,Openflow BYOC 部署将变为 Active。
默认情况下,系统会为您的 AWS 账户启用加密 EBS 卷。¶
AWS 账户可以按照 AWS EBS 默认加密文档 (https://docs.aws.amazon.com/ebs/latest/userguide/encryption-by-default.html) 的说明,将新 EBS 卷默认加密。
通过此配置,Openflow 会发出未加密 EBS 卷的请求,但 AWS API 将返回一个加密的 EBS 卷。以下步骤可确保 Openflow 有权使用这些加密卷的 KMS 密钥。
无论您选择使用 AWS 托管密钥 aws/ebs 还是自有 KMS 密钥,都必须将 IAM 策略附加到授予使用该密钥必要权限的 Openflow IAM 角色 $DEPLOYMENT_KEY-eks-role 上。
创建 IAM 策略,以允许 Openflow 使用 KMS 密钥,并将
$AWS_KMS_KEY_ARN替换为 KMS 密钥的 ARN。{ "Sid": "Allow Openflow EKS Role to encrypt EBS volumes", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "$AWS_KMS_KEY_ARN" }
确保 AWS KMS 密钥向 AWS Autoscaling Service Role 授予了相应的权限。密钥策略必须包含以下语句:
{ "Sid": "Allow Autoscaling to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::$AWS_ACCOUNT_ID:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" }, "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
上传 Openflow BYOC CloudFormation 模板时,请执行以下操作:
将可选
EBSKMSKeyArn参数留空。将
AdditionalEksRolePolicyArns参数设置为之前新创建 ARN 策略的 IAM。例如arn:aws:iam::$AWS_ACCOUNT_ID:policy/openflow-kms-key-access-policy。
上传 CloudFormation 模板大约 20 分钟后,Openflow BYOC 部署会创建一个名为
$DEPLOYMENT_KEY-eks-role的新 IAM 角色。在 KMS 密钥策略中添加以下语句,以授予 Openflow 使用该密钥的权限:
{ "Sid": "Allow Openflow Deployment to encrypt EBS volumes", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::$AWS_ACCOUNT_ID:role/$DEPLOYMENT_KEY-eks-role" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" }
Openflow 会自动检测 KMS 密钥的新权限,并继续安装流程。大约 20 分钟后,Openflow BYOC 部署将变为 Active。