某跨國企業面臨S3存儲桶權限管理的復雜需求:開發團隊需對dev-bucket中的日志文件擁有讀寫權限,但禁止刪除核心配置文件;數據分析團隊需對analytics-bucket擁有只讀訪問權限,且僅限特定IP范圍訪問;外部合作伙伴需臨時訪問partner-bucket中的報告文件,但訪問需在72小時后自動失效。傳統方案依賴存儲桶策略的“一刀切”配置,導致權限過寬(如開發團隊誤刪配置文件)或過嚴(如合作伙伴無法按時獲取文件),亟需一種細粒度、可追溯且自動化的權限管理方案。
AWS提供三種權限控制機制:存儲桶策略(Bucket Policy)、IAM用戶/角色策略(IAM Policy)和訪問控制列表(ACL)。本案例采用“存儲桶策略+IAM策略+條件約束”的組合方案,實現以下功能:
基于身份的權限:通過IAM策略限制開發團隊僅能上傳/下載日志文件,禁止刪除操作;
基于條件的權限:通過存儲桶策略限制數據分析團隊僅能從指定IP范圍(如192.0.2.0/24)訪問analytics-bucket;
基于時間的權限:通過存儲桶策略的Condition字段設置外部合作伙伴的臨時訪問權限,72小時后自動失效。
該方案通過AWS控制臺可視化配置,無需編寫復雜JSON代碼。
本次采用 AWS Console 界面完成作業。
注意:根據項目的具體情況,可以采用不同的實施方法。比如使用命令行(CLI)部署、代碼部署 (CloudFomation、Terraform 等)、以及其它開發語言(SDK)完成作業。
步驟一:配置開發團隊的 IAM 策略
登錄 AWS 控制臺,進入 IAM 服務,選擇開發團隊對應的用戶組(如 Dev-Team),點擊“權限”→“添加權限”→“創建策略”;
選擇“JSON”編輯器,輸入以下策略(禁止刪除操作):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject"],
"Resource": "arn:aws:s3:::dev-bucket/logs/*"
},
{
"Effect": "Deny",
"Action": ["s3:DeleteObject"],
"Resource": "arn:aws:s3:::dev-bucket/config/*"
}
]
}{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": ["arn:aws:s3:::analytics-bucket", "arn:aws:s3:::analytics-bucket/*"],
"Condition": {
"NotIpAddress": {"aws:SourceIp": ["192.0.2.0/24"]}
}
}
]
}{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::123456789012:user/Partner-User"},
"Action": ["s3:GetObject"],
"Resource": "arn:aws:s3:::partner-bucket/reports/*",
"Condition": {
"DateLessThan": {"aws:CurrentTime": "2024-03-15T00:00:00Z"} // 示例時間
}
}
]
}1. 開發團隊可上傳日志文件但無法刪除配置文件;數據分析團隊僅能從指定 IP 訪問數據;外部合作伙伴在72小時內可下載報告,之后權限自動撤銷。
2. 通過 AWS CloudTrail 檢查 S3操作日志,確認所有拒絕操作均被記錄,且無越權訪問嘗試。
該案例證明,通過 AWS 控制臺組合使用存儲桶策略、IAM 策略和條件約束,可實現 S3權限的精準控制。