3的第1部分
2011年,亞馬遜宣布推出針對CloudFront的AWS Identity&Access Management(IAM)支持。 IAM於2010年推出並包含S3支持。 AWS Identity&Access Management(IAM)使您可以在AWS賬戶中擁有多個用戶。 如果您使用過Amazon Web Services(AWS),那麼您知道管理AWS中的內容的唯一方法就是提供用戶名和密碼或訪問密鑰。
這對我們大多數人來說是一個真正的安全問題。 IAM消除了共享密碼和訪問密鑰的需要。
當員工離開我們的團隊時,不斷更改我們的主要AWS密碼或生成新密鑰只是一個混亂的解決方案。 AWS身份和訪問管理(IAM)是一個很好的開始,允許單個用戶帳戶擁有個人密鑰。 但是,我們是S3 / CloudFront用戶,因此我們一直在關注CloudFront,以便將其添加到最終發生的IAM中。
我發現這項服務的文檔有點分散。 有一些第三方產品為身份和訪問管理(IAM)提供了一系列支持。 但開發人員通常是節儉的,所以我尋求一種免費的解決方案來管理我們的Amazon S3服務的IAM。
本文將介紹設置支持IAM的命令行界面以及使用S3訪問設置組/用戶的過程。 在開始配置身份和訪問管理(IAM)之前,您需要先安裝Amazon AWS S3帳戶。
我的文章使用Amazon Simple Storage Service(S3)將引導您完成設置AWS S3帳戶的過程。
以下是在IAM中設置和實施用戶的步驟。 這是為Windows編寫的,但您可以調整在Linux,UNIX和/或Mac OSX中使用。
- 安裝和配置命令行界面(CLI)
- 創建一個組
- 授予對S3 Bucket和CloudFront的組訪問權限
- 創建用戶並添加到組
- 創建登錄配置文件並創建密鑰
- 測試訪問
安裝和配置命令行界面(CLI)
IAM命令行工具包是亞馬遜AWS開發人員工具中提供的Java程序。 該工具允許您從Shell實用程序(DOS for Windows)執行IAM API命令。
- 您需要運行Java 1.6或更高版本。 您可以從Java.com下載最新版本。 要查看Windows系統上安裝的版本,請打開命令提示符並鍵入java -version。 這假定java.exe在您的PATH中。
- 下載IAM CLI工具包並在本地驅動器的某處解壓縮。
- CLI工具包的根目錄中有2個文件需要更新。
- aws-credential.template:該文件包含您的AWS證書。 添加您的AWSAccessKeyId和您的AWSSecretKey,保存並關閉文件。
- client-config.template :如果你需要代理服務器,你只需要更新這個文件。 刪除#號並更新ClientProxyHost,ClientProxyPort,ClientProxyUsername和ClientProxyPassword。 保存並關閉文件。
- 下一步需要添加環境變量。 轉到控制面板| 系統屬性| 高級系統設置| 環境變量。 添加以下變量:
- AWS_IAM_HOME :將此變量設置為解壓縮CLI工具包的目錄。 如果您正在運行Windows並將其解壓縮到C驅動器的根目錄下,則該變量將為C:\ IAMCli-1.2.0。
- JAVA_HOME :將此變量設置為安裝Java的目錄。 這將是java.exe文件的位置。 在正常的Windows 7 Java安裝中,這可能類似於C:\ Program Files(x86)\ Java \ jre6。
- AWS_CREDENTIAL_FILE :將此變量設置為上面更新的aws-credential.template的路徑和文件名。 如果您正在運行Windows並將其解壓縮到C驅動器的根目錄下,則該變量將為C:\ IAMCli-1.2.0 \ aws-credential.template。
- CLIENT_CONFIG_FILE :如果您需要代理服務器,則只需添加此環境變量。 如果您正在運行Windows並將其解壓縮到C驅動器的根目錄下,則該變量將為C:\ IAMCli-1.2.0 \ client-config.template。 除非你需要,否則不要添加這個變量。
- 進入命令提示符並輸入iam-userlistbypath來測試安裝。 只要你沒有收到錯誤,你應該很樂意去。
所有的IAM命令都可以從命令提示符運行。 所有的命令都以“iam-”開頭。
創建一個組
每個AWS賬戶最多可以創建100個組。 雖然您可以在用戶級別設置IAM權限,但使用組是最佳做法。 以下是在IAM中創建組的過程。
- 創建組的語法是iam-groupcreate -g GROUPNAME [-p PATH] [-v]其中-p和-v是選項。 有關命令行界面的完整文檔可在AWS Docs上找到。
- 如果您想創建一個名為“awesomeusers”的組,您可以在命令提示符下輸入iam-groupcreate -g awesomeusers。
- 您可以通過在命令提示符處輸入iam-grouplistbypath來檢查組是否已正確創建。 如果您只創建了這個組,那麼輸出結果就像是“arn:aws:iam :: 123456789012:group / awesomeusers”,其中的數字就是您的AWS賬號。
授予對S3 Bucket和CloudFront的組訪問權限
策略控制您的團隊在S3或CloudFront中可以執行的操作。 默認情況下,您的組無權訪問AWS中的任何內容。 我發現有關政策的文檔是可以的,但是在製定一些政策時,我做了一些試驗和錯誤,讓事情按照我希望的方式工作。
您有幾個創建策略的選項。
一種選擇是你可以直接將它們輸入到命令提示符中。 由於您可能正在創建策略並對其進行調整,對於我來說,將策略添加到文本文件中似乎更容易,然後使用命令iam-groupuploadpolicy將該文本文件作為參數上載。 這是使用文本文件並上傳到IAM的過程。
- 使用記事本之類的東西,然後輸入以下文本並保存文件:
{
“聲明”:[{
“效果”:“允許”,
“行動”:“S3:*”,
“資源”:
“阿爾恩:AWS:S3 ::: BUCKETNAME”
“阿爾恩:AWS:S3 ::: BUCKETNAME / *”]
},
{
“效果”:“允許”,
“行動”:“S3:ListAllMyBuckets”
“資源”:“阿爾恩:AWS:S3 ::: *”
},
{
“效果”:“允許”,
“行動”:“CloudFront的:*”],
“資源”:“*”
}
]
} - 這個政策有三個部分。 該效果用於允許或拒絕某種類型的訪問。 行動是該團體可以做的具體事情。 該資源將用於訪問各個桶。
- 您可以單獨限制操作。 在此示例中,“Action”:[“s3:GetObject”,“s3:ListBucket”,“s3:GetObjectVersion”],該組將能夠列出存儲桶的內容並下載對象。
- 第一部分“允許”該組執行桶“BUCKETNAME”的所有S3操作。
- 第二部分“允許”該組列出S3中的所有桶。 你需要這個,所以如果你使用類似AWS控制台的東西,你實際上可以看到桶的列表。
- 第三部分為該組提供了完全訪問CloudFront的權限。
IAM政策有很多選擇。 亞馬遜有一款非常酷的工具,名為AWS Policy Generator。 該工具提供了一個GUI,您可以在其中創建策略並生成實施該策略所需的實際代碼。 您還可以查看使用AWS Identity and Access Management聯機文檔的訪問策略語言部分。
創建用戶並添加到組
創建新用戶並添加到組以提供訪問權限的過程涉及幾個步驟。
- 創建用戶的語法是iam-usercreate -u USERNAME [-p PATH] [-g GROUPS ...] [-k] [-v]其中-p,-g,-k和-v是選項。 有關命令行界面的完整文檔可在AWS Docs上找到。
- 如果你想創建一個用戶“bob”,你可以在命令提示符處輸入iam-usercreate -u bob -g awesomeusers。
- 您可以通過在命令提示符處輸入iam-grouplistusers -g awesomeusers來檢查用戶是否已正確創建。 如果您只創建了此用戶,則輸出將類似於“arn:aws:iam :: 123456789012:user / bob”,其中的編號是您的AWS賬號。
創建登錄配置文件和創建密鑰
此時,您創建了一個用戶,但您需要為他們提供一種實際添加和從S3中刪除對象的方法。
有兩個選項可用於為用戶提供使用IAM訪問S3的權限。 您可以創建一個登錄配置文件並為您的用戶提供一個密碼。 他們可以使用他們的憑據登錄到Amazon AWS控制台。 另一種選擇是給你的用戶一個訪問密鑰和一個密鑰。 他們可以在S3 Fox,CloudBerry S3 Explorer或S3 Browser等第三方工具中使用這些密鑰。
創建登錄資料
為您的S3用戶創建一個登錄配置文件為他們提供了一個用戶名和密碼,用於登錄到Amazon AWS控制台。
- 創建登錄配置文件的語法是iam-useraddloginprofile -u USERNAME -p PASSWORD。 有關命令行界面的完整文檔可在AWS Docs上找到。
- 如果您想為用戶“bob”創建登錄配置文件,則可以在命令提示符處輸入iam-useraddloginprofile -u bob -p PASSWORD。
- 您可以通過在命令提示符處輸入iam-usergetloginprofile -u bob來檢查是否正確創建了登錄配置文件。 如果你已經為bob創建了一個登錄配置文件,輸出結果就像“用戶bob的登錄配置文件”。
創建密鑰
創建AWS Secret Access Key和相應的AWS Access Key ID將允許用戶使用前面提到的第三方軟件。 請記住,作為安全措施,您只能在添加用戶配置文件的過程中獲得這些密鑰。 確保您複製並粘貼命令提示符的輸出並保存在文本文件中。 您可以將文件發送給您的用戶。
- 為用戶添加密鑰的語法是iam-useraddkey [-U USERNAME]。 有關命令行界面的完整文檔可在AWS Docs上找到。
- 如果您想為用戶“bob”創建密鑰,則可以在命令提示符處輸入iam-useraddkey -u bob。
- 該命令將輸出看起來像這樣的鍵:
AKIACOOB5BQVEXAMPLE
BvQW1IpqVzRdbwPUirD3pK6L8ngoX4PTEXAMPLE
第一行是訪問密鑰ID,第二行是秘密訪問密鑰。 您需要第三方軟件。
測試訪問
既然您已經創建了IAM組/用戶並且已經使用策略給出了組訪問權限,則您需要測試訪問權限。
控制台訪問
您的用戶可以使用他們的用戶名和密碼登錄AWS控制台。 但是,這不是用於主AWS賬戶的常規控制台登錄頁面。
您可以使用一個特殊的URL,它只會為您的Amazon AWS賬戶提供登錄表單。 這是您的IAM用戶登錄到S3的URL。
https://AWS-ACCOUNT-NUMBER.signin.aws.amazon.com/console/s3
AWS-ACCOUNT-NUMBER是您的常規AWS賬戶號碼。 您可以通過登錄亞馬遜網絡服務登錄表單獲取此信息。 登錄並點擊賬戶| 帳戶活動。 您的帳號位於右上角。 確保你刪除了破折號。 該URL看起來像https://123456789012.signin.aws.amazon.com/console/s3。
使用訪問密鑰
您可以下載並安裝本文中已經提到的任何第三方工具。 根據第三方工具文檔輸入您的訪問密鑰ID和秘密訪問密鑰。
我強烈建議您創建一個初始用戶,並讓該用戶完全測試他們可以完成他們在S3中需要做的所有事情。 驗證其中一個用戶後,您可以繼續設置所有的S3用戶。
資源
以下是一些資源,可以讓您更好地了解身份和訪問管理(IAM)。
- IAM入門
- IAM命令行工具包
- Amazon AWS控制台
- AWS策略生成器
- 使用AWS Identity and Access Management
- IAM發行說明
- IAM論壇
- IAM常見問題