CDK v2现在带来并承担了自己的角色。不再需要手动权限管理。您只需要授予承担 cdk 角色的权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::*:role/cdk-*"
]
}
]
}
这些角色是通过 创建cdk bootstrap
的,这当然需要创建角色和策略的权限。但是,在引导之后,这不再是必需的。因此,您可以使用特权角色手动运行它。
显然,如果不能承担任何 cdk 角色,CDK 会继续进行。因此,仍然可以手动管理 CDK 策略,如下所示,但现在可能需要额外的权限。
请注意,CFN 角色附加了管理员策略。
CDK v1 的先前答案:
我正在使用以下策略来部署 CDK 应用程序。除了对 CDK 暂存桶的 CFN 完全访问权限和 S3 完全访问权限之外,它还授予通过 CloudFormation执行所有操作的权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"cloudformation:*"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Condition": {
"ForAnyValue:StringEquals": {
"aws:CalledVia": [
"cloudformation.amazonaws.com"
]
}
},
"Action": "*",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "s3:*",
"Resource": "arn:aws:s3:::cdktoolkit-stagingbucket-*",
"Effect": "Allow"
},
{
"Effect": "Allow",
"Action": [
"ssm:GetParameter"
],
"Resource": "arn:aws:ssm::*:parameter/cdk-bootstrap/*"
}
]
}
您可能想要为您不想允许的事情添加一些明确的拒绝。
此外,请注意,上述条件并不意味着主体仅限于 CloudFormation 可能的事情。一个潜在的攻击向量是创建一个由 Lambda 函数支持的自定义 CFN 资源。通过该自定义资源创建资源时,您可以在 Lambda 中执行任何操作,因为它是通过 CloudFormation 触发的。
当您使用查找(这些是.fromXxx(...)
方法)时,CDK 将在运行时向相关服务发出读取/列表请求 - 当 CDK 合成器正在运行时,而不是 CloudFormation 部署。当然,您需要哪些权限取决于您在代码中的查找。例如,如果你有一个Vpc.fromLookup()你应该允许 action ec2:DescribeVpcs
。当然ReadOnlyAccess
,如果您不担心访问敏感内容,您可以附上该政策。