[英]How to lockdown S3 bucket to specific users and IAM role(s)
在我們的環境中,所有IAM用戶帳戶都分配有客戶管理的策略,該策略授予對許多AWS服務的只讀訪問權限。 這是我想做的:
這是根據AWS的要求:
到目前為止,我已經完成了以下工作:
使用以下設置以名稱“ rds-s3-policy”創建策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::test-bucket/" }, { "Effect": "Allow", "Action": [ "s3:GetObjectMetaData", "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::test-bucket/*" } ] }
將策略分配給角色
不受S3存儲桶的限制,我可以執行恢復。 但是,我找不到在不妨礙RDS服務執行還原的情況下限制對存儲桶的訪問的可靠方法。
關於限制訪問S3存儲桶的嘗試,我在線上找到了一些帖子,建議使用顯式的Deny語句來拒絕對所有類型的主體的訪問,並基於某些條件語句來授予訪問權限。
這是我的存儲桶策略的內容:
{
"Version": "2012-10-17",
"Id": "Policy1486769843194",
"Statement": [
{
"Sid": "Stmt1486769841856",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::test-bucket",
"arn:aws:s3:::test-bucket/*"
],
"Condition": {
"StringNotLike": {
"aws:userid": [
"<root_id>",
"<user1_userid>",
"<user2_userid>",
"<user3_userid>",
"<role_roleid>:*"
]
}
}
}
]
}
我可以確認存儲桶策略確實將訪問權限限制為僅指定了IAM用戶,但是我不確定它如何對待IAM角色。 我在aws論壇上找到的每個文檔都使用了上面的:*語法,在該文檔中,作者說“:*”是承擔指定角色的每個主體的全部內容。
我唯一有問題的是,有了這個存儲桶策略,當我嘗試進行數據庫還原時,出現了拒絕訪問錯誤。 有沒有人做過這樣的事情? 我整天都在忙着,還沒有找到可行的解決方案。
坦白地說,以下內容只是猜測而已...但是在閱讀有些困難的IAM文檔和其他地方的內容之間,並考慮到我最初對它的理解(錯誤地),我懷疑您使用的是角色名稱 ,而不是策略中角色的ID 。
角色ID看起來類似於AWSAccessKeyId,但它們以AROA...
開頭。
對於給定的角色,在此輸出中找到RoleId
:
$ aws iam get-role --role-name ROLE-NAME
創建廣泛的Deny
策略時請謹慎。 您最終s3:PutBucketPolicy
對自己拒絕s3:PutBucketPolicy
,這使您處於策略阻止您更改策略的情況下……在這種情況下,您唯一的辦法就是說服AWS支持刪除存儲桶策略。 一種更安全的配置是使用它僅拒絕對象級權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.