4

我正在做一些圍繞使用S3的研究。 我想實現的基本上是像在文件系統上一樣控制對S3存儲桶中對象的訪問,但對於IAM聯合用戶來說。限制聯合IAM用戶在對象級別訪問Amazon S3

假設以下情形

Bucket 
    |- File 1.txt -> ACL: Read: User1; Read: User 2 
    |- File 2.txt -> ACL: Read: Everyone; Read, Write: User 2 
    |- File 3.txt -> ACL: Read: Group 1; Read, Write: User 2 

可以利用ACL和亞馬遜的「原生」的用戶和組來實現這種配置。另一方面,對於聯合用戶,我唯一能夠找到的就是使用分配的存儲桶策略生成臨時令牌。

如果我理解正確的話,鬥式控制正在比ACL相反的方式工作(定義了哪些對象的用戶可以訪問,而ACL定義誰有權訪問的對象)

我的問題是。是否可以在ACL中分配聯合用戶(或以其他方式爲聯合用戶設置相同的目標)?

我想才達到一樣,你必須在羣體和你標記對象的用戶,其組可以訪問他們

假設場「文件系統中相同的行爲X-AMZ-薈萃seclevels'包含有權訪問文件(Group1,Group2,admin3rdfloor)的組,並提供與IAM Federated用戶相關的政策(這不正確,但我想描述我心目中的內容),我可以授予此用戶訪問權限到x-amz-meta-seclevels字段中包含admin3rdfloor值的所有文件。

{ 
'Statement': [ 
    { 
     'Sid': 'PersonalBucketAccess', 
     'Action': [ 
      's3:GetObject' 
      ], 
     'Effect': 'Allow', 
     'Resource': 'arn:aws:s3:::MyBucketName' 
     'Condition':{ 
     'StringLike':{ 
      's3:x-amz-meta-seclevels':'admin3rdfloor' 
     } 
    } 

    } 
] 

}

這是任何方式實現的?

感謝您的幫助!

回答

2

如果我正確理解你想要的配置,AWS可能剛剛發佈了一個功能啓用此方案,請參閱Variables in AWS Access Control Policies

AWS Identity and Access Management (IAM)使您能夠創建 策略控制訪問AWS服務API和資源。今天 我們正在擴展AWS訪問策略語言以包含對 變量的支持。 Policy variables可以更容易地創建和管理包含個性化訪問控制的一般策略。

下面是經常IAM用戶所提供的示例策略:

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

雖然包含在這個例子中,${aws:username}不適用於聯合用戶(或承擔角色),另外還有一個變量${aws:userid},這將被替換爲account:caller-specified-name各自的${aws:principaltype}FederatedUser, - 請參考Request Information That You Can Use for Policy Variables中的表格以獲得關於如何將這些變量替換的細節取決於g主要類型。

+0

如果我正確理解此政策,我給$ {aws:username}訪問myBucket/home/$ {aws:username}/*中的所有文件,這不能解決我的問題。在我的情況下,所有文件都在一個沒有文件夾的桶中。完全平坦的結構。我想爲聯邦用戶生成策略,這將允許此用戶根據ACL或其他可以與策略匹配的自定義元數據僅訪問文件的子集。 – Midi

+0

您是否找到任何解決方案?我也有同樣的問題。 – Arash

+0

@Arash:其實我每次用戶訪問文件時都會創建一個解決方案,創建預先註冊的url。我們正在將文件元數據存儲在SQL中,並且有一個端點,用戶正在請求指定它的元數據的文件。我們正在檢查他是否有適當的權利,如果一切正常,我們將他重定向到生成的預先登記的網址。 – Midi