2017-02-22 33 views
4

鑑於AWS Access Key和AWS Secret Key的輸入,我如何使用AWS SDK來查找帳戶可以執行的權限?鑑於AWS訪問/密鑰對,我如何檢索其IAM權限?

我想爲客戶做XYZ,所以客戶需要給我訪問密鑰和密鑰以編程方式執行XYZ。但是,在嘗試執行任何這些操作之前,我想驗證它們提供給我的憑據是否具有某些權限,例如能夠創建S3對象或能夠啓動EC2實例。

這樣,我可以驗證訪問密鑰和密鑰是否有權在我以他們的名義做任何事情之前做些事情。

回答

1

您可以使用SimulatePrincipalPolicy API來模擬附加到IAM實體的​​一組IAM策略如何與API操作和AWS資源列表配合使用,以確定策略的有效權限。

該實體可以是IAM用戶,組或角色。如果您指定了一個用戶,那麼該模擬還會包含所有附加到該用戶所屬組的策略。

您需要提供該用戶的ARN作爲PolicySourceArn輸入參數(不需要使用可選CallerArn輸入參數)的「SimulatePrincipalPolicy」 API。如果您具有訪問密鑰ID和祕密訪問密鑰,則可以通過使用該用戶憑據調用GetUser API (即,不指定用戶名輸入參數)來檢索用戶的ARN。如果未包含用戶名,則API默認爲提出請求的用戶。

+0

這可以工作,如果我有CallerArn但我只有訪問和密鑰。所以也許這個問題變成「我怎麼才能通過只知道或使用他們的訪問或祕密密鑰來查找用戶的ARN?」 –

+0

我已經更新了我的答案,包括如何獲得用戶ARN。請記住,您不需要使用** CallerArn **參數。你只需要** PolicySourceArn **。 –

+0

請檢查我的答案上面[http://stackoverflow.com/a/42402517/649408] - 也得到ARN請檢查我的其他答案[http://stackoverflow.com/a/31837458/649408] –

1

我會建議使用AWS CLI爲宗旨,利用該--dry運行標誌的CLI命令。我不確定有多少AWS CLI操作支持--dry-run操作,而不提標籤級別/資源級別限制。

The --dry-run如果沒有實際執行請求,標誌會嘗試檢查是否有權運行API。

enter image description here

enter image description here

我也看到測試(迴歸)的困難,因爲AWS有60多個服務和EC2就有227個API命令[今天的]。也許,這可能是在那裏你會用你的sed,awk中,grep來建立一個shell腳本[在GitHub上發佈]

的SDK不支持此還有的地方 - 它可能比命令方式更容易

相關問題