2017-08-11 8 views
0

私はhttps://aws.amazon.com/blogs/security/iam-policies-and-bucket-policies-and-acls-oh-my-controlling-access-to-s3-resources/を読んでいましたが、私はいつ何時に答えたのですか。S3の権限は、IAMポリシーとバケットポリシーの両方で管理できるのはなぜですか?

私はAWSを初めて使いこなしています。

1つではなく2つの方法を作成するのはなぜですか?この記事の例に基づいて、IAMポリシーJSONに「Principal」エントリを「関連付けのベース」または「??」として含めるなど、両方のユースケースを処理するIAMポリシーを設定するだけでは不十分ですポリシーポリシー制御を必要とするサービスは、別のタイプのポリシーを作成するように見えます。例。 YYYのサービスポリシーには、プリンシパルとアクション「YYY:」があります。

理由私は、S3はアクセス制御(細かい粒度、グループ化など)が必要で、特定のS3を作成したポリシーを持つことで管理が容易になり、バックエンドリソースが少なくて済みます。

答えて

0

IAM許可ポリシーとS3バケットポリシーなどのリソースベースポリシーがある理由はさまざまです。

S3バケットがあり、他のアカウントへのアクセスを許可したいとします。 IAMポリシーのみを使用することはできません。したがって、アカウントまたはIAMエンティティをプリンシパルとして含めるバケットポリシーが必要です。

また、IAMアクセス許可ポリシーでプリンシパルを使用することはできません。これは、ユーザーが要求したときにポリシーがIAMユーザーに添付されるとプリンシパルになります。

詳細については、以下に見てください。 http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal http://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-overview.html

+0

私は、リソースベースのポリシーがIDベースポリシーが追加される前であったためだと思うし、AWSは両方を1つに結合することはできません。ありがとう! –

1

S3は、ユーザ、バケット、およびオブジェクトの「文脈」で、すべての該当する当局をテストして要求を許可します。

How Amazon S3 Authorizes a Requestを参照してください。

このドキュメントは最初の読解では混乱しますが、複数のポリシーで何が起こっているのかが分かります。

心に留めておくべきいくつかのポイント:

  • ユーザーがバケツを所有していません。 アカウント自分のバケット、およびアカウントを自分のユーザー。
  • ユーザーがバケットを作成した場合、そのユーザーを所有するアカウントは常にそのバケットを所有します。
  • ユーザーがオブジェクトを作成した場合、そのオブジェクトを作成したバケットが別のアカウントによって所有されていても、そのユーザーを所有するアカウントは常にそのオブジェクトを所有します。

お待ちください。

私のバケツにあなたのユーザがオブジェクトを作成する権限を与えた場合、あなたは実際にそのオブジェクトを所有します。あなたが私にそれを読む許可を与えない限り、私はそれを読むことができません。それは私のバケツの中にあり、私はそれを保存するために払っている、私はそれを削除することができますが、それは私がそれにアクセスできない限り、私はそのオブジェクトに行うことができます。

ユーザー権限(IAMポリシー)、バケツとバケツ(バケットポリシーとACL)、物事アカウントの物件に対して、物事勘定を実行することが許可されている権限自分が所有するオブジェクト(オブジェクトACL)に対して実行を許可します。

デフォルトアクションは暗黙的拒否ですが、明示的に拒否されていない限り、他の場所で許可することで、許可する権限を持つアカウントは許可されます。明示的な拒否は例外なく、常に拒否されます。モデルの

影響:

  • 私のユーザーは、私のバケツ、私のオブジェクトは、唯一の助成金を必要とします。私のアカウントはすべてのリソースを所有しているので、3つの場所のいずれかでアクセスを許可する必要があります。IAMポリシー、バケットポリシー、またはオブジェクトでこれを行うことができます。
  • あなたのバケツは2つのグラントを必要とします - 私はIAMポリシーでユーザーを許可します。あなたはユートバッカーポリシーで自分のユーザーを許可する必要があります。私はあなたの同意なしにあなたのバケツに物事を行う権限を持っていないし、あなたは私のユーザーが私の同意なしに何かをすることを許可する権限がありません。
  • IAMポリシーはユーザーに適用され、「すべてのユーザー」は自分のIAMユーザーの1人ではないため、オブジェクトACLまたはバケットポリシーを通じてバケット内のオブジェクトを公開することは可能ですが、IAMポリシーは使用できません。

したがって、権限モデルのために、S3には複数のソースが必要です。クロスアカウントを何もしていない場合、可能な組み合わせのいくつかを知らないので、これのいくつかは明白ではありません。

私のバケットポリシーにはほとんど注意を払う必要はありません。ユーザーにはIAMでアクセス権が与えられ、オブジェクトレベルでパブリックオブジェクトが公開されます(バケットポリシーでこれを行うことができますが、オブジェクトレベルでは明示的に指定する方が望ましい)ので、バケットポリシーは目的が限定されています。バケツポリシーはAES-256のないアップロードを拒否します(したがって、オブジェクトの暗号化を「忘れる」ことはできません)。また、CloudFrontとの相互運用のための発信元アクセスID規則が存在することがあります...バケツポリシーのカスタマイズはほとんどありません。それは私の設計理念なのです。

+0

あなたが指摘したバケットとオブジェクトの所有者をテストする別のアカウントを取得する方法が見つかりました。実際の生活パターン/哲学をありがとう!私がAWSで働いていれば、私もそれを使用します。私はいくつかのAWS docを読んでから少なくとも3ポイントを認識していません。ありがとうマイケル! –

+0

ありがとう、@ YewHang。投票することを忘れないでください。 –

関連する問題