2016-07-29 57 views
1

衝突的文件AWS STS AssumeRole:是否需要IAM用戶憑證?

documentation here,有關AssumeRole,似乎違背自己在一個連續的塊:

您必須使用現有的IAM用戶憑據調用此API。有關更多 信息,請參閱創建角色以將權限委派給IAM 用戶並配置受MFA保護的API訪問。

這是一個未簽名的電話,這意味着應用程序不需要有 訪問任何AWS安全證書爲了進行呼叫。

矛盾給出加粗強調。

代碼示例

code sample provided here肯定似乎需要憑據:

AmazonSecurityTokenServiceClient securityTokenServiceClient = new AmazonSecurityTokenServiceClient(
    Config.AccessKey, 
    secretKeyAsString, 
    securityTokenServiceConfig); 

...

AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest 
{ 
    DurationSeconds = sessionDurationSec, 
    RoleArn = roleArn, 
    RoleSessionName = awsUsername, 
    ExternalId = groupSid 
}; 

...

assumeRoleResponse = securityTokenServiceClient.AssumeRole(assumeRoleRequest); 

總結

這是真的嗎?代碼示例中的請求是否真的是多餘的?

謝謝!

回答

2

AssumeRole API調用確實需要現有的AWS憑證

爲了承擔IAM角色,必須使用現有的一組憑據,以便AWS知道誰承擔了角色。這樣AWS就可以驗證允許承辦方承擔角色。

在文檔:

這是一個無符號調用,這意味着應用程序並不需要有爲了使呼叫接入到任何AWS安全證書。

這確實看起來是不正確的信息。

1

這確實是文檔中的一個錯誤,正在糾正過程中。 AssumeRole確實需要現有的長期(IAM用戶)或臨時憑證憑據進行調用。它是兩個聯邦等價物,AssumeRoleWithSAML和AssumeRoleWithWebIdentity可以在沒有憑證的情況下被調用。對困惑感到抱歉!