46

Amazon S3 で静的 Web サイトをホストしたいと考えていますが、アクセスを特定のユーザーに制限する必要があります。これは、IP アドレスまたは Amazon 資格情報による可能性があります (ログインしているユーザーのみがバケットのコンテンツにアクセスできます。

これは可能ですか?

ありがとう

4

4 に答える 4

52

はい、確かに可能です。あなたにとってより良い出発点は、S3 access controlを読むことです。

ただし、デフォルトでは、S3 で作成されたバケットはパブリックではありません。したがって、デフォルトの動作は、アクセスと秘密鍵を知っている人/プログラムのみがアクセスできるようにする必要があります。

特定の AWS アカウントまたは E メール ID へのアクセスを許可するために、バケットのアクセス許可を編集することもできます。

特定の IP へのアクセスを制限するために、追加のバケット ポリシーを作成できます。

特定の IP アドレスへのアクセスを制限する

このステートメントは、指定されたバケット内のオブジェクトに対して任意の S3 アクションを実行する権限をすべてのユーザーに付与します。ただし、リクエストは、条件で指定された IP アドレスの範囲から発信されている必要があります。このステートメントの条件は、192.168.143.188 という 1 つの例外を除いて、許可された IP アドレスの範囲 192.168.143.* を識別します。

条件で指定された IPAddress および NotIpAddress の値は、RFC 2632 で説明されている CIDR 表記法を使用することに注意してください。詳細については、http://www.rfc-editor.org/rfc/rfc4632.txtにアクセスしてください。

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::bucket/*",
            "Condition" : {
                "IpAddress" : {
                    "aws:SourceIp": "192.168.143.0/24" 
                },
                "NotIpAddress" : {
                    "aws:SourceIp": "192.168.143.188/32" 
                } 
            } 
        } 
    ]
}

詳細については、こちらこちらをお読みください。

于 2013-01-15T18:59:24.580 に答える
14

編集: AWS は S3 (パス: amazonaws.com) の AWS マネジメント コンソール (パス: amazon.com) の資格情報/Cookie を登録しておらず、それらもチェックしていないため、S3 でホストされている静的なウェブサイトではユーザー/グループ ベースの制限は機能しません。 .

回避策: www.s3auth.com - S3 バケットの Basic Auth でうまくいくかもしれませんが、サードパーティが関与します。もう 1 つのソリューションは、EC2 インスタンスまたはElastic Beanstalk Java SE Static Files Optionを使用したクエリ文字列リクエスト認証です。現在、Amazon S3 Proxy として Amazon API Gateway を使用してバケットを保護することを検討しています。


補足: 注意すべき点がいくつかありますが、直接指摘されていないことがよくあります。

現在、バケット ポリシーでグループ アクセスを許可または制限することはできません。特定のユーザーのみです。また、通常、ユーザー構造の変更ごとに各バケット ポリシーを更新したくないため、バケット ポリシーは (意図せずに)ユーザー ポリシーに干渉する可能性があるため、バケット ポリシーを使用したくない場合があります。

ユーザー/グループ ベースのポリシーは、orに接続されたs3:GetBucketLocationandでのみ機能します (残念ながら、ここではフィルタリングできません。このポリシーを使用すると、すべてのバケット名がユーザー/グループに表示されます)。s3:ListAllMyBucketsarn:aws:s3:::**

IAM ポリシーの例: (S3 バケット ポリシーではなく静的 Web サイト ホスティングでは機能しません)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::YOURBUCKETNAME",
                "arn:aws:s3:::YOURBUCKETNAME/*"
            ]
        }
    ]
}

詳細なブログ記事: 「Amazon S3 バケットへのアクセスを特定の IAM ロールに制限する方法」

于 2016-11-21T18:00:31.760 に答える
2

バケット/静的 Web サイトへのアクセスを特定の http リファラーに制限することもできます。そのため、そのサイトにログインしたユーザーのみが Amazon でホストされているサイトにアクセスできる wordpress メンバーシップ サイトを設定できます。例: mymembershipsite.com/members 。

于 2016-05-30T09:27:15.700 に答える