AWS IAM 提供了多種方法來安全管理 AWS 提供的服務,其中一種就是 IAM 角色(Role)。使用 IAM 角色可以避免儲存憑證,從而降低未經授權存取的風險。這種角色會動態分配臨時憑證給 AWS 服務。
在本文中,我們將探討如何使用 IAM 角色來讓 EC2 實例存取 S3。值得注意的是,在任何部署中,將 S3 與 EC2 連接是最常見的組合之一。
使用 IAM 角色將 S3 與 EC2 整合的好處有很多。首先,它們允許對權限進行細緻控制,確保 EC2 實例只能對 S3 bucket 執行明確允許的特定操作。此外,這種方法自動化了憑證管理,無需手動輪替密鑰或將它們嵌入代碼中。最後,使用 IAM 角色可以提升 AWS 基礎設施的可擴展性和可維護性,因為隨著環境的增長或變更,管理權限變得更加簡單。
前置條件
在設置 IAM 角色以整合 S3 與 EC2 之前,必須先完成幾個前置條件:
AWS 帳戶設置:您應該擁有一個有效的 AWS 帳戶並能夠登入 AWS 管理控制台。此外,您需要有建立和管理 IAM 角色、EC2 實例和 S3 bucket 的必要權限。
現有的 EC2 實例與 S3 bucket:您應該在 AWS 帳戶中至少有一個 EC2 實例和一個 S3 bucket,這些將用來演示 IAM 角色如何促進這些服務之間的互動。
建立 IAM 角色
在 AWS 管理控制台中建立 IAM 角色需經過幾個步驟。以下是如何建立一個專門允許 EC2 實例存取 S3 bucket 的角色:
首先,從 AWS 控制台進入 IAM 儀表板。進入儀表板後,從左側選單選擇「角色」(Roles)。

進入後,您將看到當前使用者的所有現有角色。這些角色可能會根據帳戶的不同而有所不同。現在,點擊「建立角色」(Create role)按鈕。

在「信任實體類型」(Trusted entity type)選擇中,選擇「AWS 服務」(AWS service),因為我們將它用於 AWS 服務。IAM 角色還可以用於其他用途,如此處所示。

接下來,在「使用案例」(Use case)中選擇 EC2,然後點擊下一步。為了保持簡單,這裡只專注於與演示直接相關的部分。

在下一個畫面中,您將看到所有預設的 IAM 角色政策。在搜尋框中輸入「s3read」,然後選擇「AmazonS3ReadOnlyAccess」政策,這將為角色繼承者提供讀取 S3 文件的權限。無需設定「設定權限邊界」(Set permissions boundary),點擊「下一步」。

現在,輸入角色名稱和簡短描述。

最後,檢查所有設定,並點擊「建立角色」(Create role)。

這樣就完成了角色的建立。
將 IAM 角色附加到 EC2 實例
建立 IAM 角色後,接下來要將該角色的權限附加到 EC2 實例。前往 EC2 實例儀表板,選擇 EC2 實例,並從「操作」(Actions)下拉選單中,選擇「安全性」(Security)並點擊「修改 IAM 角色」(Modify IAM Role)。

在此處,選擇我們建立的 IAM 角色,然後點擊「更新 IAM 角色」(Update IAM role)。

如此一來,該 EC2 實例現在擁有存取 S3 bucket 所需的所有權限。
從 EC2 實例存取 S3 bucket
接下來,讓我們從 EC2 實例存取 S3 bucket。首先,登入您的 EC2 實例。如果您沒有使用 AWS AMI Amazon Linux,您可能需要安裝 AWS CLI 來存取 S3 bucket。
要確認是否安裝了 AWS CLI,執行命令 aws –version。

確認後,執行 aws s3 ls 命令。此命令將列出帳戶內所有位於該區域的 S3 bucket。

我們可以在 S3 控制台中確認這些 bucket 的存在。

此外,還可以使用 aws s3 ls s3://bucketname 命令查看 bucket 中的內容。

有了我們擁有的權限,我們可以讀取檔案,並將它們複製到我們的系統中。要複製檔案,您可以使用命令`aws s3 cp s3://bucket/file .`。

如果我們嘗試將檔案上傳到 bucket,您會發現出現了「存取被拒絕」(AccessDenied)的錯誤。

接下來,前往我們建立的 IAM 角色,點擊「新增權限」(Add permissions)並選擇「附加政策」(Attach policies)。

之後,新增「AmazonS3FullAccess」政策,這將賦予我們的 EC2 實例寫入存取權。

完成後,再次執行複製命令,這次將不會有任何問題。

這就是使用 IAM 角色的好處,您可以隨時變更權限,附加多個實例或 AWS 服務,也可以輕鬆刪除角色。
如何卸載並刪除 IAM 角色
首先,若要卸載角色,選擇相同的「操作」(Actions)>「安全性」(Security)>「修改 IAM 角色」(Modify IAM role)。

然後選擇「無 IAM 角色」(No IAM Role),並點擊「更新 IAM 角色」(Update IAM role)。

接著,輸入「Detach」作為確認。此操作將移除 EC2 實例的存取權限。

接下來,若要刪除角色,前往您先前建立的 IAM 角色,點擊「刪除」按鈕。

最後,再次點擊「刪除」以確認刪除。

這將成功刪除該角色。
Kommentare