簡體   English   中英

如何使用 boto3 為 IAM 用戶授予對 S3 存儲桶的完全權限?

[英]How to grant full permissions on an S3 bucket for an IAM user using boto3?

我正在使用 username 作為username動態創建多個 IAM 用戶,並使用username-bucket作為名稱創建一個 S3 存儲username-bucket

我想在以username-bucket作為名稱創建的 s3 存儲桶上為新創建的用戶授予完全權限。

我已經閱讀了boto3文檔,其中他們將策略分配給s3存儲桶。 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-example-bucket-policies.html

但它適用於任何用戶。 沒有選項可以傳遞應該對存儲桶具有權限的用戶名。

boto3是否有這樣的選擇?

與在您鏈接的示例中將Principal設置為* ,您希望使用以下格式將用戶指定為Principal

"Principal": {"AWS":"arn:aws:iam::account-number-without-hyphens:user/username"}

有關在 S3 存儲桶策略中指定Principal更多信息,請參閱此處的文檔

替代建議:您可以授予每個用戶訪問共享存儲桶中目錄的權限,而不是為每個用戶提供自己的存儲

這允許您使用更易於管理的IAM 策略變量

來自IAM 策略元素:變量和標簽 - AWS Identity and Access Management

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": ["s3:ListBucket"],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::mybucket"],
      "Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
    },
    {
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::mybucket/${aws:username}/*"]
    }
  ]
}

存儲桶上的這一單一策略將允許每個用戶訪問他們自己的目錄。 用戶名將自動插入到策略中。 這意味着您只需使用一個策略創建一個存儲桶。

暫無
暫無

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

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