簡體   English   中英

如何將S3存儲桶鎖定到特定用戶和IAM角色

[英]How to lockdown S3 bucket to specific users and IAM role(s)

在我們的環境中,所有IAM用戶帳戶都分配有客戶管理的策略,該策略授予對許多AWS服務的只讀訪問權限。 這是我想做的:

  • 將SQL Server 2012 Express數據庫從本地遷移到RDS實例
  • 限制對包含數據庫文件的S3存儲桶的訪問

這是根據AWS的要求:

  • 一個S3存儲桶以存儲.bak數據庫文件
  • 具有訪問存儲桶的角色
  • 附加到RDS實例的SQLSERVER_BACKUP_RESTORE選項

到目前為止,我已經完成了以下工作:

  • 創建了一個名稱為“ test-bucket”的存儲桶(並在此處上傳了.bak文件)
  • 創建了一個名為“ rds-s3-role”的角色
  • 使用以下設置以名稱“ 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/*" } ] } 
  • 將策略分配給角色

  • 授予RDS服務的AssumeRole權限以承擔上面創建的角色
  • 使用SQLSERVER_BACKUP_RESTORE選項在RDS中創建一個新的選項組,並將其鏈接到我的RDS實例

不受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

https://aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/

創建廣泛的Deny策略時請謹慎。 您最終s3:PutBucketPolicy對自己拒絕s3:PutBucketPolicy ,這使您處於策略阻止您更改策略的情況下……在這種情況下,您唯一的辦法就是說服AWS支持刪除存儲桶策略。 一種更安全的配置是使用它僅拒絕對象級權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM