AWS Python CDK-关于策略创建的特定于帐户的资源



我正在尝试创建一个AWS策略,以向主体授予kms:CreateKey权限。我在定义策略的资源部分时遇到问题。

通过阅读文档,我发现我可以指定如下内容:

arn:AWS_partition_name:kms:AWS_region:AWS_account_ID:*

而不是常规CCD_ 2。

我的问题是,如何使用Python CDK实现这一点?

您可以创建这样的IAM策略:

iam.PolicyStatement(
# effect is optional.  It can be DENY or ALLOW, and it defaults to ALLOW
effect=iam.Effect.ALLOW,
# Specifies a list of actions this principal is allowed/denied to call.
actions=[
# Specify a specific action
'kms:CreateKey',
# Or, you can specify all actions of a specific service:
'kms:*',
],
# Resources this principal can act on. 
resources=[
# All keys in your account, in your region
'arn:aws:kms:<YOUR REGION>:<YOUR ACCOUNT ID>:key/*',

# All aliases in your account, in your region
'arn:aws:kms:<YOUR REGION>:<YOUR ACCOUNT ID>:alias/*',
],
)

我非常强烈建议您在交互式IAM策略编辑器中玩一玩,该编辑器提供了创建策略时可以做的所有必需/可能的事情的奇妙视图,包括高级ARN组合。

您可以通过在与AWS CLI/AWS CDK相关的Python中使用预定义的env变量来完成此操作。在这种情况下,您可以通过以下方式进行:

arn = f"arn:AWS_partition_name:kms:{os.getenv('CDK_DEFAULT_REGION')}:{os.getenv('CDK_DEFAULT_ACCOUNT')}:*"

以下是如何添加it角色的全貌:

role = _iam.Role(self, "lambda_emr_launcher_role", 
role_name="_trackit-emr-launcher-role",
description="Service role for self-titled Lamdbda",
assumed_by=_iam.ServicePrincipal("lambda.amazonaws.com"),
managed_policies=[_iam.ManagedPolicy.from_aws_managed_policy_name("service-role/AWSLambdaBasicExecutionRole")],
inline_policies={
"Policy_KMS": _iam.PolicyDocument(statements=[
_iam.PolicyStatement(effect=_iam.Effect.ALLOW,
principals=["principal_example1"],
resources=[f"arn:AWS_partition_name:kms:{os.getenv('CDK_DEFAULT_REGION')}:{os.getenv('CDK_DEFAULT_ACCOUNT')}:*"],
actions=["kms:CreateKey"])])})

相关内容

  • 没有找到相关文章

最新更新