可以將 EC2 密鑰限制為 ec2-associate-address 嗎?
我有一個具有彈性 IP 的正常 EC2 實例。實例停止了幾次,我只是通過 AWS 管理控制台手動將 IP 與它重新關聯。我現在正在考慮將它遷移到一個現場實例,這意味著我想要一種在啟動時自動將其重新關聯到 IP 的方法,如果/當機器由於價格退出市場而關閉時。如何實現這一點在很多地方都有很好的描述(例如這裡)。
我的問題是:
像許多有這個問題的人一樣,我對將我的 AWS 憑證文件放在實例本身上持謹慎態度。我有一個模糊的記憶,看到一些關於可以創建具有更有限權限的其他密鑰的東西,但是我很難找到任何具體的細節。所以:是否有可能創建一個我可以愉快地放在機器上的密鑰,知道它只能用於一個 ec2-associate-instance (但不能登錄到其他實例,或者通常使用我的 AWS 帳戶執行 riot),我將如何實現這一目標?
這確實可以通過AWS Identity and Access Management (IAM)實現,它使您能夠安全地控制使用者對 AWS 服務和資源的訪問(因此,現在強烈建議使用 IAM 而不是日常 AWS 使用的主賬戶憑證) .
其中,IAM 支持以下案例:
對 AWS 資源的細粒度訪問控制:IAM 使您能夠控制對 AWS 服務 API 和特定資源的訪問。IAM 還允許您添加特定條件來控制使用者如何使用 AWS,例如一天中的時間、他們的原始 IP 地址或他們是否使用 SSL。
可用的 AWS 服務之間的相應粒度有所不同(它往往會隨著時間的推移而增加),但幸運的是 EC2 API 的粒度很高,並且您正在尋找的東西很容易獲得 - 例如,您可能想查看推薦的AWS Policy Generator,選擇類型IAM Policy和服務Amazon EC2 ,這將允許您依次選擇操作AssociateAddress 。
因此,您應該能夠通過為手頭的任務創建一個專用的 IAM 使用者來實現您的目標,制定一個基本上僅限於AssociateAddress的 IAM 策略(也可能是DisassociateAddress)並將此策略分配給 IAM 使用者 - 例如,該策略可能看起來像這:
{ "Statement": [ { "Action": [ "ec2:AssociateAddress", "ec2:DisassociateAddress" ], "Effect": "Allow", "Resource": "*" } ] }