在AWS CDK中,可以使用@aws-cdk/aws-iam
模块中的Action
类来定义AWS服务的不同资源动作。Action
类本质上是一个字符串枚举类型,AWS定义了大量的动作名称以供使用。
下面是一个示例代码,使用Action
类定义S3桶资源不同的动作:
import { PolicyStatement, Effect, AnyPrincipal } from '@aws-cdk/aws-iam';
import { Action } from '@aws-cdk/aws-iam';
// 定义S3桶资源不同的动作
const s3Actions = [
Action.BUCKET_CREATE,
Action.BUCKET_DELETE,
Action.BUCKET_GET,
Action.BUCKET_LIST,
Action.OBJECT_CREATE,
Action.OBJECT_DELETE,
Action.OBJECT_GET,
Action.OBJECT_PUT,
];
// 设置IAM策略陈述,限制为指定的操作
const s3Statement = new PolicyStatement({
effect: Effect.ALLOW,
principals: [new AnyPrincipal()],
actions: s3Actions,
resources: ['arn:aws:s3:::my-bucket/*'],
});
// 添加S3策略
myBucket.addToResourcePolicy(s3Statement);
在Action
的类定义中,AWS还提供了用于其他AWS服务的动作名称。通过组合不同的动作及其资源ARN,可以定义更加细粒度的策略来控制IAM资格证书的权限。