本文將為您介紹在Container Registry使用自訂OSS Bucket時的RAM存取控制配置。
背景說明
預設OSS Bucket
當使用Container Registry的預設OSS Bucket時,您需為帳號授權Container Registry訪問雲端服務資源,這樣Container Registry才能建立OSS Bucket並初始化ACR執行個體。
自訂OSS Bucket
當您需要使用自訂OSS Bucket,則需要為帳號添加RAM角色,並授予該角色對OSS Bucket操作許可權,以確保Container Registry能夠正常訪問該Bucket。
步驟一:建立RAM角色
Container Registry訪問自訂OSS Bucket時,需要為阿里雲帳號建立的角色名稱為AliyunContainerRegistryCustomizedOSSBucketRole。
操作步驟
使用Resource Access Management員登入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角色的信任策略中添加Container Registry,使Container Registry可以訪問使用者自訂的OSS Bucket。
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"cr.aliyuncs.com"
]
}
}
],
"Version": "1"
}