AWS IAM 設定教學:生成訪問密鑰以用於 S3 配置
更新日期: 2024 年 12 月 18 日
本文為 圖片上傳 AWS S3 系列教學,第 13 篇:
- AWS S3 是什麼?
- boto3 與 django-storages:如何在 Django 中對接 AWS S3
- AWS S3 與 IAM:圖片上傳功能的權限管理指南
- S3 與 Postgres 的比較與應用
- Amazon S3 物件所有權設定解析
- AWS S3「阻止所有公開訪問」設定說明
- Amazon S3 儲存桶版本控制完整指南
- 如何設定 S3 儲存桶的「預設加密」?—— 初學者指南
- S3 儲存桶標籤(Tags)簡單介紹:讓你的 S3 管理更輕鬆!
- AWS S3 物件鎖定功能入門指南
- AWS S3 公開存取權完整指南
- AWS CORS 預檢請求與設定指南
- AWS IAM 設定教學:生成訪問密鑰以用於 S3 配置 👈 所在位置
- django-storages 基本配置:讓應用程式連接 S3 存儲桶
- Django-storages 的完整配置教學:從隱密性到快取控制
- Django-storages 完整配置指南:從文件存儲到訪問路徑
- Django-storages 配置:環境變數設定
- Django-storages 與 STORAGES 配置:未來相容性的最佳實踐
- 如何在 Django 中移除 DEBUG URL 的靜態檔案配置
建議閱讀本文前,先閱讀完 圖片上傳功能 系列文
AWS S3 是一個用於存儲靜態文件和其他資源的雲端服務。
為了讓應用程式能夠安全地與 AWS S3 通信,我們需要通過 AWS IAM(身份與訪問管理)創建一個專屬用戶,並分配適當的權限。
此用戶的主要目的,是允許應用程式使用 訪問密鑰(Access Key ID 和 Secret Access Key) 來上傳圖片或執行其他 S3 操作,而不是使用 AWS 管理控制台進行手動管理。
以下是生成這些密鑰的具體步驟。
如何生成 AWS 訪問密鑰
登入 AWS 管理控制台
- 打開瀏覽器,進入 AWS 官方網站
- 點擊右上角的 「登入」,輸入你的 AWS 帳號與密碼進入管理控制台主頁面。
進入 IAM 服務
- 在 AWS 管理控制台的頂部搜索欄中,輸入 「IAM」,點擊進入「身份與訪問管理」服務頁面。
- IAM 是 AWS 的身份與訪問管理服務,用於控制用戶和資源的訪問權限。
創建一個新用戶
- 在左側選單中,點擊 「用戶(Users)」,然後點擊 「添加用戶(Add users)」。
- 輸入用戶名稱:
- 這個名稱可以描述該用戶的用途,例如
django_s3_user
。
- 這個名稱可以描述該用戶的用途,例如
- 提供 AWS 管理控制台訪問權限的選擇:
注意:在創建用戶過程中,會出現「向用戶提供 AWS 管理控制台的訪問權限」的選項。以下是選擇的建議:
- 不勾選(推薦)
勾選(可選)
- 如果這個用戶只需要程序化地與 AWS S3 進行交互(例如通過 API 操作 S3 存儲桶),不需要登入 AWS 管理控制台,則可以不勾選此選項。安全性優點:該用戶將無法登入 AWS 控制台,降低帳號被攻擊的風險。
- 如果你希望該用戶能夠登入 AWS 控制台來手動管理 S3 資源,則可以勾選此選項,並設置一個登入密碼。
推薦選擇:如果你只是為 Django 專案配置 S3 上傳功能,建議選擇 不勾選,使該用戶只用於程序化訪問。
分配用戶權限
在這個步驟,你需要選擇如何分配該用戶的權限。以下是三種常見的權限分配方式:
選項 1:直接附加策略(簡單快速)
- 在「直接附加現有策略」選項中,搜索並選擇
AmazonS3FullAccess
策略。 AmazonS3FullAccess
的作用:- 允許用戶對所有 S3 存儲桶進行完整的操作,包括上傳、下載和刪除文件。
選項 2:添加用戶到組(適合多用戶管理)
- 如果你有多個用戶需要共享同樣的權限,建議創建一個「用戶組」。
- 在「添加用戶到組」中,創建一個組並附加
AmazonS3FullAccess
策略。 - 將新用戶分配到這個組中。
選項 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
策略 是最簡單的方式。 - 如果有安全需求,可以稍後調整為自定義策略。
確認並創建用戶
- 檢查用戶名稱、訪問類型(是否允許登入控制台)和分配的策略是否正確。
- 點擊 「創建用戶(Create user)」。
保存訪問密鑰(Access Key 和 Secret Key)
- 在用戶創建完成後,你將看到該用戶的
Access Key ID
和Secret Access Key
。 - 保存密鑰:
- 點擊 「下載 .csv 文件」,將密鑰文件保存到安全的位置。
- 或者手動複製密鑰並保存到一個安全的密鑰管理工具中。
- 注意:
- 這些密鑰只會顯示一次,若遺失則需要重新生成。
這部分完成後,你已經成功創建了一個具備 S3 訪問權限的用戶,並生成了其訪問密鑰。
這些密鑰將在接下來配置 Django 或其他應用程式時使用。