通過調用AssumeRole介面,擷取一個扮演RAM角色的臨時身份憑證(STS Token)。
介面說明
前提條件
該介面不能使用阿里雲帳號(主帳號)調用,只能使用 RAM 使用者或 RAM 角色調用,請確保已為調用者(RAM 使用者或 RAM 角色)授予 STS 的系統管理權限(AliyunSTSAssumeRoleAccess)。
否則,會報如下錯誤:
You are not authorized to do this action. You should be authorized by RAM.
問題原因和解決方案如下:
該調用者缺少允許 STS 扮演角色的權限原則:請為該調用者添加系統策略(AliyunSTSAssumeRoleAccess)或自訂策略。具體操作,請參見能否指定 RAM 使用者具體可以扮演哪個 RAM 角色、為 RAM 使用者授權。
RAM 角色的信任策略不包含調用者,即 RAM 角色不允許該調用者扮演:請為 RAM 角色添加允許該調用者扮演的信任策略。具體操作,請參見修改 RAM 角色的信任策略。
最佳實務
STS Token 自頒發後將在一段時間內有效,建議您設定合理的 Token 有效期間,並在有效期間內重複使用,以避免業務請求速率上升後,STS Token 頒發的速率限制影響到業務。具體速率限制,請參見 STS 服務調用次數是否有上限。您可以通過請求參數DurationSeconds設定 Token 有效期間。
在移動端上傳或下載 OSS 檔案等情境下,其訪問量較大,即使重複使用 STS Token 也可能無法滿足限流要求。為避免 STS 的限流成為 OSS 訪問量的瓶頸,您可以嘗試 OSS 的在 URL 中包含簽名的方案。更多資訊,請參見在 URL 中包含簽名和服務端簽名後直傳。
調試
您可以在OpenAPI Explorer中直接運行該介面,免去您計算簽名的困擾。運行成功後,OpenAPI Explorer可以自動產生SDK程式碼範例。
調試
授權資訊
|
操作 |
存取層級 |
資源類型 |
條件關鍵字 |
關聯操作 |
|
sts:AssumeRole |
get |
*Role
|
無 | 無 |
請求參數
|
名稱 |
類型 |
必填 |
描述 |
樣本值 |
| DurationSeconds |
integer |
否 |
Token 有效期間。單位:秒。 Token 有效期間最小值為 900 秒,最大值為要扮演角色的 您可以通過 CreateRole 或 UpdateRole 設定角色最大會話時間 |
3600 |
| Policy |
string |
否 |
為 STS Token 額外添加的一個權限原則,進一步限制 STS Token 的許可權。具體如下:
長度為 1~2048 個字元。 |
{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} |
| RoleArn |
string |
是 |
要扮演的 RAM 角色 ARN。 該角色是可信實體為阿里雲帳號類型的 RAM 角色。更多資訊,請參見建立可信實體為阿里雲帳號的 RAM 角色或 CreateRole 。 格式: 您可以通過 RAM 控制台或 API 查看角色 ARN。具體如下:
|
acs:ram::123456789012****:role/adminrole |
| RoleSessionName |
string |
是 |
角色會話名稱。 該參數為使用者自訂參數。通常設定為調用該 API 的使用者身份,例如:使用者名稱。在Action Trail日誌中,即使是同一個 RAM 角色執行的操作,也可以根據不同的 長度為 2~64 個字元,可包含英文字母、數字和特殊字元 |
alice |
| ExternalId |
string |
否 |
角色外部 ID。 該參數為外部提供的用於表示角色的參數資訊,主要功能是防止混淆代理人問題。更多資訊,請參見使用 ExternalId 防止混淆代理人問題。 長度為 2~1224 個字元,可包含英文字母、數字和特殊字元 |
abcd1234 |
| SourceIdentity |
string |
否 |
源身份資訊。 在扮演角色時,可以指定扮演者的源身份(SourceIdentity)作為會話的初始身份標識。 該源身份的值在持續扮演角色的鏈式會話中將一直存在,中途不可更改,可確保操作的可追溯性和安全性。 SourceIdentity 長度為 2~64 個字元,可包含英文字母、數字、以及特殊字元: |
Alice |
關於公用請求參數的詳情,請參見公用請求參數。
返回參數
|
名稱 |
類型 |
描述 |
樣本值 |
|
object |
返回參數。 |
||
| RequestId |
string |
請求 ID。 |
6894B13B-6D71-4EF5-88FA-F32781734A7F |
| AssumedRoleUser |
object |
角色扮演時的臨時身份。 |
|
| AssumedRoleId |
string |
臨時身份的 ID。 |
34458433936495****:alice |
| Arn |
string |
臨時身份的 ARN。 |
acs:ram::123456789012****:role/adminrole/alice |
| Credentials |
object |
訪問憑證。 |
|
| SecurityToken |
string |
安全性權杖。 說明
安全性權杖的長度不固定,我們強烈建議您不要對安全性權杖的最大長度做任何限制。 |
******** |
| Expiration |
string |
Token 到期失效時間(UTC 時間)。 |
2015-04-09T11:52:19Z |
| AccessKeySecret |
string |
存取金鑰。 |
wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK**** |
| AccessKeyId |
string |
存取金鑰 ID。 |
STS.L4aBSCSJVMuKg5U1**** |
| SourceIdentity |
string |
源身份資訊。 在扮演角色時,可以指定扮演者的源身份(SourceIdentity)作為會話的初始身份標識。 該源身份的值在持續扮演角色的鏈式會話中將一直存在,中途不可更改,可確保操作的可追溯性和安全性。 如果沒有設定源身份資訊,則該欄位不會返回。 |
Alice |
樣本
正常返回樣本
JSON格式
{
"RequestId": "6894B13B-6D71-4EF5-88FA-F32781734A7F",
"AssumedRoleUser": {
"AssumedRoleId": "34458433936495****:alice",
"Arn": "acs:ram::123456789012****:role/adminrole/alice"
},
"Credentials": {
"SecurityToken": "********",
"Expiration": "2015-04-09T11:52:19Z",
"AccessKeySecret": "wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****",
"AccessKeyId": "STS.L4aBSCSJVMuKg5U1****"
},
"SourceIdentity": "Alice"
}
錯誤碼
|
HTTP status code |
錯誤碼 |
錯誤資訊 |
描述 |
|---|---|---|---|
| 400 | InvalidParameter.DurationSeconds | The Min/Max value of DurationSeconds is 15min/1hr. | |
| 400 | InvalidParameter.ExternalId | The parameter ExternalId is wrongly formed. | |
| 400 | InvalidParameter.RoleArn | The parameter RoleArn is wrongly formed. | |
| 400 | InvalidParameter.RoleSessionName | The parameter RoleSessionName is wrongly formed. | |
| 400 | InvalidParameter.SerialNumber | The parameter SerialNumber is wrongly formed. | |
| 400 | InvalidParameter.TokenCode | The parameter TokenCode is wrongly formed. | |
| 400 | InvalidParameter.PolicyGrammar | The parameter Policy has not passed grammar check. | |
| 400 | InvalidParameter.PolicySize | The size of Policy must be smaller than 2048 bytes. | |
| 400 | InvalidParameter.ContentType | The ContentType request header must be either "application/json" or "application/x-www-form-urlencoded". | |
| 500 | InternalError | STS Server Internal Error happened, please send the RequestId to us. | |
| 403 | NoPermission | You are not authorized to do this action. You should be authorized by RAM. | |
| 403 | AuthenticationFail.ApiUsername | The specified api username is not legal. | |
| 403 | AuthenticationFail.ApiPassword | The specified api password is not legal. | |
| 404 | EntityNotExist.Role | The specified Role not exists . |
訪問錯誤中心查看更多錯誤碼。
變更歷史
更多資訊,參考變更詳情。