AWS IAM 設定教學:生成訪問密鑰以用於 S3 配置

更新日期: 2024 年 12 月 18 日

AWS S3 是一個用於存儲靜態文件和其他資源的雲端服務。

為了讓應用程式能夠安全地與 AWS S3 通信,我們需要通過 AWS IAM(身份與訪問管理)創建一個專屬用戶,並分配適當的權限。

此用戶的主要目的,是允許應用程式使用 訪問密鑰(Access Key ID 和 Secret Access Key) 來上傳圖片或執行其他 S3 操作,而不是使用 AWS 管理控制台進行手動管理。

以下是生成這些密鑰的具體步驟。


如何生成 AWS 訪問密鑰

登入 AWS 管理控制台

  1. 打開瀏覽器,進入 AWS 官方網站
  2. 點擊右上角的 「登入」,輸入你的 AWS 帳號與密碼進入管理控制台主頁面。

進入 IAM 服務

  1. 在 AWS 管理控制台的頂部搜索欄中,輸入 「IAM」,點擊進入「身份與訪問管理」服務頁面。
  2. IAM 是 AWS 的身份與訪問管理服務,用於控制用戶和資源的訪問權限。

創建一個新用戶

  1. 在左側選單中,點擊 「用戶(Users)」,然後點擊 「添加用戶(Add users)」
  2. 輸入用戶名稱
    • 這個名稱可以描述該用戶的用途,例如 django_s3_user
  3. 提供 AWS 管理控制台訪問權限的選擇

注意:在創建用戶過程中,會出現「向用戶提供 AWS 管理控制台的訪問權限」的選項。以下是選擇的建議:

  1. 不勾選(推薦)
    • 如果這個用戶只需要程序化地與 AWS S3 進行交互(例如通過 API 操作 S3 存儲桶),不需要登入 AWS 管理控制台,則可以不勾選此選項。安全性優點:該用戶將無法登入 AWS 控制台,降低帳號被攻擊的風險。
    勾選(可選)
    • 如果你希望該用戶能夠登入 AWS 控制台來手動管理 S3 資源,則可以勾選此選項,並設置一個登入密碼。

推薦選擇:如果你只是為 Django 專案配置 S3 上傳功能,建議選擇 不勾選,使該用戶只用於程序化訪問。

分配用戶權限

在這個步驟,你需要選擇如何分配該用戶的權限。以下是三種常見的權限分配方式:

選項 1:直接附加策略(簡單快速)

  1. 在「直接附加現有策略」選項中,搜索並選擇 AmazonS3FullAccess 策略。
  2. AmazonS3FullAccess 的作用
    • 允許用戶對所有 S3 存儲桶進行完整的操作,包括上傳、下載和刪除文件。

選項 2:添加用戶到組(適合多用戶管理)

  1. 如果你有多個用戶需要共享同樣的權限,建議創建一個「用戶組」。
  2. 在「添加用戶到組」中,創建一個組並附加 AmazonS3FullAccess 策略。
  3. 將新用戶分配到這個組中。

選項 3:自定義策略(進階安全設置)

如果你只希望該用戶訪問特定的 S3 存儲桶,或者限制某些操作,可以使用自定義策略。以下是一個只允許訪問特定存儲桶的範例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::my-django-bucket",
        "arn:aws:s3:::my-django-bucket/*"
      ]
    }
  ]
}
  • 解析
    • s3:* 表示允許所有 S3 操作(上傳、下載、刪除)。
    • Resource 限定該用戶僅對名為 my-django-bucket 的存儲桶及其內部文件擁有操作權限。

推薦選擇

  • 對於新手或需要快速部署的情況,選擇 AmazonS3FullAccess 策略 是最簡單的方式。
  • 如果有安全需求,可以稍後調整為自定義策略。

確認並創建用戶

  1. 檢查用戶名稱、訪問類型(是否允許登入控制台)和分配的策略是否正確。
  2. 點擊 「創建用戶(Create user)」

保存訪問密鑰(Access Key 和 Secret Key)

  1. 在用戶創建完成後,你將看到該用戶的 Access Key IDSecret Access Key
  2. 保存密鑰
    • 點擊 「下載 .csv 文件」,將密鑰文件保存到安全的位置。
    • 或者手動複製密鑰並保存到一個安全的密鑰管理工具中。
  3. 注意
    • 這些密鑰只會顯示一次,若遺失則需要重新生成。

這部分完成後,你已經成功創建了一個具備 S3 訪問權限的用戶,並生成了其訪問密鑰。

這些密鑰將在接下來配置 Django 或其他應用程式時使用。

Similar Posts