2016-09-28 3 views
2

私はAWSにそれぞれIAMアカウントを持つ2人のユーザーUser1とUser2を持っています。私はs3バケット「external_bucket.frommycompany.com」を持っています。そのバケットには、各ユーザーアカウント "User1"と "User2"のフォルダがあります。 User1フォルダへのR/Wアクセスのみを許可し、User2へのR/WアクセスはUser2フォルダへのアクセスのみを許可したい。 external_bucket.frommycompany.comのルートディレクトリにあるお互いのフォルダを見ることはできません。これが可能であるようにIAMポリシーを設定する方法はありますか?複数のIAMユーザに対してそれぞれの個人バケットフォルダにアクセスできるようにS3ポリシーを設定する方法はありますか?

私の目標は、ユーザーがCloudberryのようなS3ブラウザアプリケーションからS3バケットに接続できるようにすることで、ファイルを自分のフォルダにのみアップロードしてダウンロードできるようにすることです。

これに関する最高のデザインに関するアドバイスは大歓迎です。

+0

http://www.cloudberrylab.com/ad-bridge.aspxそれはあなたが交換するユーザーのために1、共通のフォルダを持つことができますデータと各個人用の1つの個人用フォルダ。また、他のユーザーのフォルダは表示されません。 – Antoine

答えて

1

here

から、このような何かにのみアクセスUser1のフォルダにユーザー1を許可するように動作するはずです:

{ 
"Version":"2012-10-17", 
"Statement": [ 
    { 
    "Sid": "AllowUserToSeeBucketListInTheConsole", 
    "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"], 
    "Effect": "Allow", 
    "Resource": ["arn:aws:s3:::*"] 
    }, 
    { 
    "Sid": "AllowRootAndHomeListingOfCompanyBucket", 
    "Action": ["s3:ListBucket"], 
    "Effect": "Allow", 
    "Resource": ["arn:aws:s3:::my-company"], 
    "Condition":{"StringEquals":{"s3:prefix":["","/"],"s3:delimiter":["/"]}} 
    }, 
    { 
    "Sid": "AllowListingOfUserFolder", 
    "Action": ["s3:ListBucket"], 
    "Effect": "Allow", 
    "Resource": ["arn:aws:s3:::my-company"], 
    "Condition":{"StringLike":{"s3:prefix":["user1/*"]}} 
    }, 
    { 
    "Sid": "AllowAllS3ActionsInUserFolder", 
    "Effect": "Allow", 
    "Action": ["s3:*"], 
    "Resource": ["arn:aws:s3:::user1/*"] 
    } 
] 
} 

は、User1のポリシーとしてこれを適用し、彼らは唯一のuser1/フォルダにアクセスすることができるはずです。 "s3:prefix":["","/"]...の部分はおそらく変更される可能性がありますが、私はポリシー言語について十分に精通しておらず、方法を知ることができません。

User2のポリシーでuser1をuser2に置き換えた場合、User2はuser2/というフォルダにしかアクセスできません。

+0

ありがとうございます。これは私が必要とするものに近いですが、完全に解決策ではありません。私はUser1が存在する他のバケットを見る能力を阻止する必要があり、個々のバケットの他のフォルダはアクセス権を与えている。どのように私はこのポリシーファイルを有効にするために変更することができます任意のアイデア? –

+0

'AllowUserToSeeBucketListInTheConsole'ステートメントを取り除くと、他のバケットのリスト表示を防止し、' AllowRootAndHomeListingOfCompanyBucket'ステートメントは他のフォルダのリスト表示を防ぐことができます。 – millinon

+0

ミリオン、これは私の問題を解決しました。あなたの助けに大きな感謝! –

2

これはofficial answerです。

例:この例ではバケット

内のフォルダに各IAMユーザーアクセスを許可し、あなたのバケットへのアクセス 、examplebucketを持ってするには、2人のIAMユーザー、アリスとボブをしたいので、彼らはすることができます追加、更新、および削除する オブジェクト。ただし、各ユーザーのアクセスをバケット内の単一の フォルダに制限する必要があります。ユーザー名が に一致する名前のフォルダを作成することがあります。

+0

"**ポリシー変数**を使用する単一のポリシーを作成し、そのポリシーをグループ" Mind blown "に添付することができます。共有ありがとう! –

2

policy variablesの使用は、あなたが今日これをやっていない場合、実際にはゲームチェンジャーです。

S3 policy examplesでこの例を参照してください:

代わりに、個々のユーザーにポリシーを取り付けるのは、しかし、あなたは 政策変数を使用する単一のポリシーを作成し、グループに ポリシーを付加することができます。最初にグループを作成して、 アリスとボブの両方をグループに追加する必要があります。次のポリシー例では、examplebucket/${aws:username}フォルダのAmazon S3のアクセス権を に設定できます。 ポリシーが評価されるとき、ポリシー変数${aws:username}は がリクエスターのユーザー名で置き換えられます。たとえば、アリスが オブジェクトの要求を送信した場合、アリスが というオブジェクトをexamplebucket/Aliceフォルダにアップロードする場合に限り、操作が許可されます。

{ 
    "Version":"2012-10-17", 
    "Statement":[ 
     { 
     "Effect":"Allow", 
     "Action":[ 
      "s3:PutObject", 
      "s3:GetObject", 
      "s3:GetObjectVersion", 
      "s3:DeleteObject", 
      "s3:DeleteObjectVersion" 
     ], 
     "Resource":"arn:aws:s3:::examplebucket/${aws:username}/*" 
     } 
    ] 
} 
ドライブでは動作し、我々はADブリッジを使用するために使用されるまったく同じケースでは
+1

すばらしい例!これは、私にとって100倍のフォルダーサポートを簡素化します。 –

関連する問題