阿里雲許可權管理機制包括存取控制和臨時安全性權杖,可以根據需求使用不同許可權的RAM使用者來訪問Intelligent Media Management服務,也支援為使用者提供訪問的臨時授權。使用RAM和STS能極大地提高管理的靈活性和安全性。
背景資訊
RAM和STS解決的一個核心問題是如何在不暴露阿里雲帳號的AccessKey的情況下安全地授權其他人訪問。因為阿里雲帳號的AccessKey泄露會帶來極大的安全風險,其他人可以隨意操作該帳號下所有的資源、盜取重要訊息等。
RAM
存取控制(RAM)是阿里雲提供的系統管理使用者身份與資源存取權限的服務。RAM允許在一個阿里雲帳號下建立並管理多個身份,並允許給單個身份或一組身份分配不同的許可權,從而實現不同使用者擁有不同資源存取權限的目的。更多資訊,請參見什麼是存取控制。
RAM提供了一種長期有效許可權控制機制,通過分出不同許可權的RAM使用者,將不同的許可權分給不同的使用者,即使RAM使用者的AccessKey泄露也不會造成全域的資訊泄露。RAM使用者一般情況也是長期有效。因此RAM使用者的AccessKey也不能泄露。
STS
阿里雲臨時安全性權杖(Security Token Service,STS)是阿里雲提供的一種臨時存取權限管理服務。通過STS服務,您所授權的身份主體(RAM使用者或RAM角色)可以擷取一個自訂時效和存取權限的臨時存取權杖。更多資訊,請參見什麼是STS。
相對於RAM提供的長效控制機制,STS提供的是一種臨時訪問授權,通過STS可以擷取臨時的AccessKey和Token,這些資訊可以直接發給臨時使用者用來訪問Intelligent Media Management。一般來說,從STS擷取的許可權會受到更加嚴格的限制,並且擁有時間限制,因此即使這些資訊泄露,對於系統的影響也很小。
配置RAM使用者權限
為了資料安全和更好的許可權控制,建議使用RAM使用者訪問Intelligent Media Management。
建立RAM使用者。具體操作,請參見建立RAM使用者。
為RAM使用者授權,根據實際配置RAM使用者的許可權。具體操作,請參見為RAM使用者授權。
如果需要管理Intelligent Media Management,例如建立專案等,請授予RAM使用者AliyunIMMFullAccess許可權。
如果唯讀訪問Intelligent Media Management,例如查看專案等,請授予RAM使用者AliyunIMMReadOnlyAccess許可權。
為RAM使用者佈建多因素認證。具體操作,請參見為RAM使用者啟用多因素認證。
配置臨時使用者權限
建立臨時角色及授權。
建立可信實體為阿里雲帳號的RAM角色。具體操作,請參見建立可信實體為阿里雲帳號的RAM角色。
建立自訂策略。具體操作,請參見建立自訂權限原則。
說明如果需要更精細的許可權控制,您可以自訂策略的許可權。更多資訊,請參見Intelligent Media Management自訂權限原則參考。
為臨時角色授權。具體操作,請參見為RAM角色授權。
臨時授權訪問。
從STS擷取的臨時訪問憑證。具體操作,請參見AssumeRole - 擷取扮演角色的臨時身份憑證。
使用臨時授權讀寫資料。
您可以使用臨時授權調用不同語言的SDK訪問Intelligent Media Management。Java SDK請參考以下方式建立IAcsClient對象,傳入從STS擷取的AccessKeyId、AccessKeySecret和SecurityToken等參數。
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", stsAccessKeyId, stsAccessKeySecret, stsToken); IAcsClient client = new DefaultAcsClient(profile);
自訂RAM Policy
通過自訂RAM Policy實現使用者權限控制,主要配置如下表所示。
參數 | 說明 |
Effect | 是否允許使用者操作。可選值如下:
|
Action | Intelligent Media Management對外提供的API操作。格式為 |
Resource | Intelligent Media Management目前只有Project一種資源,格式為
|
更多關於權限原則的資訊,請參見建立自訂策略。
常見授權樣本
完全授權
RAM Policy將允許使用者訪問使用Intelligent Media Management的所有功能,範例程式碼如下。
{
"Version": "1",
"Statement": [
{
"Action": "imm:*",
"Resource": "*",
"Effect": "Allow"
}
]
}
授權通配
RAM Policy支援萬用字元*
,可以實現大量授權。
如下範例程式碼表示允許使用者調用所有地區以imm-test-doc
開頭的Project下的可讀操作。
{
"Statement": [
{
"Effect": "Allow",
"Action": ["imm:List*", "imm:Get*"],
"Resource": "acs:imm:*:150910xxxxxxxxxx:project/imm-test-doc*"
}
],
"Version": "1"
}
授權特定Project的特定操作
如下範例程式碼表示授予使用者以下許可權:
允許訪問ListProjects - 列出所有專案資訊的列表介面。
允許訪問CreateOfficeConversionTask - 建立文檔轉換任務介面,並且僅能操作華東2(上海)地區的imm-test-doc-proj專案。
允許訪問CreateFigureClusteringTask - 建立人物聚類任務和CreateFigureClustersMergingTask - 合并人物聚類介面,並且僅能操作華東2(上海)地區的imm-test-media-proj專案。
{ "Statement": [ { "Effect": "Allow", "Action": ["imm:ListProjects"], "Resource": "*" }, { "Effect": "Allow", "Action": ["imm:CreateOfficeConversionTask"], "Resource": "acs:imm:cn-shanghai:150910xxxxxxxxxx:project/imm-test-doc-proj" }, { "Effect": "Allow", "Action": ["imm:CreateFigureClusteringTask", "imm:CreateFigureClustersMergingTask"], "Resource": "acs:imm:cn-shanghai:150910xxxxxxxxxx:project/imm-test-media-proj" } ], "Version": "1" }
授權特定資料集的特定操作
如下範例程式碼表示授予使用者以下許可權:
允許訪問ListDatasets - 列出資料集介面。
允許訪問IndexFileMeta - 索引檔案元資訊介面,並且僅能操作華東2(上海)地區的imm-test-media-proj專案的dataset1資料集。
允許訪問CreateFigureClusteringTask - 建立人物聚類任務和CreateFigureClustersMergingTask - 合并人物聚類介面,並且僅能操作華東2(上海)地區的imm-test-media-proj專案的dataset1資料集。
{
"Statement": [
{
"Effect": "Allow",
"Action": ["imm:ListDatasets"],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": ["imm:IndexFileMeta"],
"Resource": "acs:imm:cn-shanghai:150910xxxxxxxxxx:project/imm-test-doc-proj/dataset/dataset1"
},
{
"Effect": "Allow",
"Action": ["imm:CreateFigureClusteringTask", "imm:CreateFigureClustersMergingTask"],
"Resource": "acs:imm:cn-shanghai:150910xxxxxxxxxx:project/imm-test-media-proj/dataset/dataset1"
}
],
"Version": "1"
}