本文将为您介绍在容器镜像服务使用自定义OSS Bucket时的RAM访问控制配置。
背景说明
默认OSS Bucket
当使用容器镜像服务的默认OSS Bucket时,您需为账号授权容器镜像服务访问云服务资源,这样容器镜像服务才能创建OSS Bucket并初始化ACR实例。
自定义OSS Bucket
当您需要使用自定义OSS Bucket,则需要为账号添加RAM角色,并授予该角色对OSS Bucket操作权限,以确保容器镜像服务能够正常访问该Bucket。
步骤一:创建RAM角色
容器镜像服务访问自定义OSS Bucket时,需要为阿里云账号创建的角色名为AliyunContainerRegistryCustomizedOSSBucketRole。
操作步骤
使用RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在角色页面,单击创建角色。
在创建角色页面,选择可信实体类型为阿里云账号,然后单击下一步。
设置角色信息。
输入角色名称。
输入备注。
选择信任的云账号。
当前云账号:当您允许当前阿里云账号下的所有RAM用户扮演该RAM角色时,您可以选择当前云账号。
其他云账号:当您允许其他阿里云账号下的所有RAM用户扮演该RAM角色时,您可以选择其他云账号,然后输入其他阿里云账号(主账号)ID。该项主要针对跨阿里云账号的资源授权访问场景,相关教程,请参见跨阿里云账号的资源授权。
您可以在安全设置页面查看阿里云账号(主账号)ID。
重要如果您仅允许指定的RAM用户扮演该RAM角色,而不是阿里云账号(主账号)下的所有RAM用户,您可以采取以下两种方式:
修改RAM角色的信任策略。具体操作,请参见示例一:修改RAM角色的可信实体为阿里云账号。
修改RAM用户的角色扮演权限策略。具体操作,请参见能否指定RAM用户具体可以扮演哪个RAM角色?。
单击完成。
单击关闭。
步骤二:配置RAM角色的权限策略
配置该RAM角色的策略,使其拥有对指定的OSS Bucket资源读取容器镜像仓库信息的权限,RAM角色的权限策略名为AliyunContainerRegistryCustomizedOSSBucketRolePolicy。当需要获取多个自定义OSS Bucket信息时,可向Resource中添加多个OSS Bucket值。
{
"Version": "1",
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:PutObject",
"oss:DeleteObject",
"oss:ListParts",
"oss:AbortMultipartUpload",
"oss:InitiateMultipartUpload",
"oss:CompleteMultipartUpload",
"oss:DeleteMultipleObjects",
"oss:ListMultipartUploads",
"oss:ListObjects",
"oss:DeleteObjectVersion",
"oss:GetObjectVersion",
"oss:ListObjectVersions",
"oss:PutObjectTagging",
"oss:GetObjectTagging",
"oss:DeleteObjectTagging"
],
"Resource": [
"acs:oss:*:*:cri-*",
"acs:oss:*:*:cri-*/*",
"acs:oss:*:*:<YOUR_BUCKET_NAME>", # 请将<YOUR_BUCKET_NAME>替换为您实际需要授权的Bucket名称。
"acs:oss:*:*:<YOUR_BUCKET_NAME>/*" # 请将<YOUR_BUCKET_NAME>替换为您实际需要授权的Bucket名称。
],
"Effect": "Allow",
"Condition": {
}
},
{
"Action": [
"oss:PutBucket",
"oss:GetBucket",
"oss:GetBucketLocation",
"oss:PutBucketEncryption",
"oss:GetBucketEncryption",
"oss:PutBucketAcl",
"oss:GetBucketAcl",
"oss:PutBucketLogging",
"oss:GetBucketReferer",
"oss:PutBucketReferer",
"oss:GetBucketLogging",
"oss:PutBucketVersioning",
"oss:GetBucketVersioning",
"oss:GetBucketLifecycle",
"oss:PutBucketLifecycle",
"oss:DeleteBucketLifecycle",
"oss:GetBucketTransferAcceleration"
],
"Resource": [
"acs:oss:*:*:cri-*",
"acs:oss:*:*:cri-*/*",
"acs:oss:*:*:<YOUR_BUCKET_NAME>", # 请将<YOUR_BUCKET_NAME>替换为您实际需要授权的Bucket名称。
"acs:oss:*:*:<YOUR_BUCKET_NAME>/*" # 请将<YOUR_BUCKET_NAME>替换为您实际需要授权的Bucket名称。
],
"Effect": "Allow",
"Condition": {
}
},
{
"Effect": "Allow",
"Action": "oss:ListBuckets",
"Resource": [
"acs:oss:*:*:*",
"acs:oss:*:*:*/*"
],
"Condition": {
}
},
{
"Action": [
"vpc:DescribeVpcs"
],
"Resource": "acs:vpc:*:*:vpc/*",
"Effect": "Allow",
"Condition": {
}
},
{
"Action": [
"cms:QueryMetricLast",
"cms:QueryMetricList"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
步骤三:配置RAM角色的信任策略
为该RAM角色的信任策略中添加容器镜像服务,使容器镜像服务可以访问用户自定义的OSS Bucket。
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"cr.aliyuncs.com"
]
}
}
],
"Version": "1"
}