注意事項
如果僅授予子賬戶系統策略 CRS admin ,可能存在訂購企業版實例后無法支付和查詢訂單的情況,需要配置訂單相關系統策略: mktadmin(優惠券相關權限)、bss admin(訂單相關權限)、acctadmin(賬單相關權限)。詳情參考相關文檔:子用戶如何查看賬單管理界面和子用戶如何創建和下單一類節點資源。
系統策略說明
CRS默認設置三種系統策略,您可以直接使用系統權限策略為子賬號授權,提供的三種系統策略如下:
CRS admin:容器鏡像服務CRS-管理員權限策略,擁有CRS所有資源的讀寫權限。
CRS user:容器鏡像服務CRS-普通用戶權限策略,擁有除了訂單相關操作之外的所有讀寫權限。
CRS viewer:容器鏡像服務CRS-只讀用戶權限策略,擁有CRS所有資源的只讀權限。
子賬戶授權系統權限
以授權子賬戶管理員權限策略為例說明:
使用天翼云賬號登入。
在左側導航欄,選擇"用戶"授權子賬戶。
選擇"操作" - "查看",進入用戶界面,選擇"權限管理"標簽頁,選擇 "個人權限" - "新增權限"。
搜索框輸入CRS,搜索CRS系統權限策略,勾選CRS admin系統策略。
點擊下一步,由于CRS系統權限為全局服務資源,無需設置資源池。
點擊確定按鈕,即可完成為子賬戶授權。
子賬戶授權自定義權限策略
使用IAM策略助手創建自定義策略(推薦)
登錄容器鏡像服務控制臺,選擇左側導航欄的"IAM策略"助手功能。
若選擇在系統策略的基礎上自定義策略,可以選擇所需系統策略,然后點擊"克隆";若選擇從零創建自定義策略,點擊 "創建權限策略"
以從零創建自定義策略為例,輸入策略名稱,輸入策略備注(可選),點擊 "新增權限語句" 為策略配置允許或者拒絕的權限
權限語句分為三個部分,配置完成后,點擊保存權限語句:
權限效力:允許(允許策略中配置的權限和資源),拒絕(拒絕策略中配置的權限和資源)。
操作權限:勾選需要配置的操作權限
操作權限的資源:對于具體操作權限,部分權限可以配置限定資源(實例,命名空間,鏡像倉庫),具體見 CRS資源權限管控 內容
完成權限語句配置后點擊下一步,可預覽所配置自定義權限策略的JSON,默認勾選 ctiam 同步生效,點擊保存,完成自定義權限策略配置
推薦勾選 ctiam 同步生效,會在CTIAM控制臺同步生成對應的自定義策略
如果不勾選 ctiam 同步生效,用戶可以復制預覽中的權限策略的JSON,登入 ,創建自定義策略
用戶可以通過克隆、編輯和刪除管理已保存的自定義策略。
狀態欄表示該自定義策略是否在CTIAM生效,例如用戶通過CTIAM修改現存自定義策略,導致策略內容與IAM策略助手中的不一致,狀態欄將顯示未生效。推薦使用IAM策略助手統一管理您的CRS相關自定義策略。
IAM控制臺創建自定義策略
1.使用天翼云賬號登入。
2.在左側導航欄,選擇 "策略管理" - "創建自定義策略"。
3.輸入策略名稱,輸入策略描述(可選),點擊下一步。
4.設置策略內容,本文介紹使用可視化視圖的方式設置,如果需要使用更靈活的JSON視圖,請參考IAM文檔。
效果:允許(允許策略中配置的權限),拒絕(拒絕策略中配置的權限)
云服務:搜索關鍵字“容器鏡像服務”
操作:根據需求勾選需要配置的操作(即權限)
資源:具體見資源權限管控內容
條件:該配置參考具體IAM文檔。
5. 點擊保存,完成自定義策略的創建。
為子賬戶設置自定義權限策略
使用天翼云賬號登入。
在左側導航欄,選擇用戶授權子賬戶。
選擇操作 - 查看,進入用戶界面,選擇權限管理標簽頁,選擇個人權限的新增權限。
搜索框輸入上一步設置的自定義權限策略名稱,勾選上一步創建的自定義權限策略。
點擊“下一步”,由于CRS自定義權限為全局服務資源,無需設置資源池。
點擊 “確定”,即可完成為子賬戶授權。
CRS資源權限管控
使用IAM的JSON視圖創建自定義策略時,可以通過設置資源字段來實現細粒度的資源權限管控。
CRS的資源定義
CRS的資源定義方式如下表所示:
| 資源類型 | 資源含義 | Resource示例 | Resource含義 |
|---|---|---|---|
| * | 全部實例 | ctrn:crs:$regionid:$accountid:* | 擁有全部實例的權限 |
| instance | 實例 | ctrn:crs:$regionid:$accountid:instance/$instanceId | 擁有$instanceId實例的權限 |
| repository | 鏡像 | ctrn:crs:$regionid:$accountid:repository/$instanceId | 擁有$instanceId實例下所有命名空間和倉庫的權限 |
| ctrn:crs:$regionid:$accountid:repository/$instanceId/$namespaceName | 擁有$instanceId實例$namespaceName命名空間及其下倉庫的權限 | ||
| ctrn:crs:$regionid:$accountid:repository/$instanceId/$namespaceName/$repositoryName | 擁有$instanceId實例$namespaceName命名空間$repositoryName倉庫的權限 | ||
| chart | Helm Chart | ctrn:crs:$regionid:$accountid:chart/$instanceId | 擁有$instanceId實例下所有chart命名空間和chart倉庫的權限 |
| ctrn:crs:$regionid:$accountid:chart/$instanceId/$chartNamespaceName | 擁有$instanceId實例$chartNamespaceName chart命名空間及其下chart倉庫的權限 | ||
| ctrn:crs:$regionid:$accountid:chart/$instanceId/$chartNamespaceName/$chartRepositoryName | 擁有$instanceId實例$chartNamespaceName chart命名空間$chartRepositoryName chart倉庫的權限 |
參數含義如下:
| 參數名稱 | 說明 |
|---|---|
regionId | 資源池ID,可用*代替 |
| accountId | 賬號ID,可用*代替 |
| instanceId | 容器鏡像服務實例ID |
| namespaceName | 命名空間名稱 |
| repositoryName | 鏡像倉庫名稱 |
| chartNamespaceName | Chart命名空間名稱 |
| chartRepositoryName | Chart倉庫名稱 |
CRS實例、命名空間和倉庫的權限管控
創建自定義策略時,使用JSON視圖配置權限編碼(Action字段)和資源(Resource字段),可實現對CRS實例、命名空間和倉庫的權限管控。
在如下自定義策略示例中,授予了實例ID1845994351386169346、命名空間ns1和ns2、以及鏡像倉庫repo1和repo2的權限。
在配置時,可根據實際情況替換實例ID、命名空間和倉庫名稱,也可按需增加權限編碼,隨后將策略內容復制到JSON視圖的文本框中,便可實現策略的創建。
{
"Version": "1.1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"crs:inst:instance-list",
"crs:inst:get_instance",
"crs:inst:get_instance_quotas",
"crs:inst:get_instance_storage_config",
"crs:inst:update_instance_storage_config",
"crs:inst:update_password",
"crs:inst:list_instance_quotas",
"crs:inst:get_token"
],
"Resource": [
"ctrn:crs:*:*:instance/1845994351386169346"
]
},
{
"Effect": "Allow",
"Action": [
"crs:inst:list_namespace",
"crs:inst:get_namespace",
"crs:inst:validate_namespace_name",
"crs:inst:update_namespace",
"crs:inst:delete_namespace"
],
"Resource": [
"ctrn:crs:*:*:repository/1845994351386169346/ns1",
"ctrn:crs:*:*:repository/1845994351386169346/ns2"
]
},
{
"Effect": "Allow",
"Action": [
"crs:inst:list_repository",
"crs:inst:get_repository",
"crs:inst:validate_repository",
"crs:inst:update_repository",
"crs:inst:delete_repository",
"crs:inst:get_layers",
"crs:inst:pull_image",
"crs:inst:push_image"
],
"Resource": [
"ctrn:crs:*:*:repository/1845994351386169346/ns1/repo1",
"ctrn:crs:*:*:repository/1845994351386169346/ns2/repo2"
]
}
]
}子賬戶登錄CRS實例的訪問憑證
查看子賬戶的訪問憑證
使用子賬戶登錄容器鏡像服務控制臺。
左側導航欄,選擇訪問控制 - 訪問憑證,即可查看子賬戶登錄實例的用戶名,即docker login命令中--username參數指定的值。
子賬戶的用戶名和密碼有兩種情況:
CRS實例不是由子賬戶所創建: 子賬戶用戶名的形式為: <創建實例時填寫的用戶名>@<子賬戶的數字ID>,例如:zhangsan@1234。子賬戶的密碼默認沒有設置,在初次登錄實例之前,需要在訪問憑證頁面點擊重置密碼按鈕設置密碼,之后才能使用用戶名和設置的密碼登錄實例。子賬戶的密碼與其他子賬戶和主賬戶的密碼相互獨立。重置密碼不會影響其他賬戶。
CRS實例是由子賬戶所創建: 子賬戶的用戶名和密碼即為創建實例時填寫的用戶名和密碼,可直接使用用戶名和密碼登錄實例。子賬戶與主賬戶共用密碼。重置密碼也會影響主賬戶。
子賬戶的訪問憑證與IAM的關系
子賬戶的訪問憑證僅用于登錄CRS實例以推拉鏡像,訪問憑證的用戶名與IAM授權時所選擇的子賬戶用戶名無關。
要查詢子賬戶在IAM授權時對應的用戶名,可使用子賬戶登錄IAM控制臺,左側導航欄選擇概覽,查詢到子賬戶的用戶ID。
使用主賬戶登錄IAM控制臺,左側導航欄選擇用戶,即可查看到子賬戶用戶ID對應用戶,便可對其進行授權。