Amazon S3 で静的 Web サイトをホストしたいと考えていますが、アクセスを特定のユーザーに制限する必要があります。これは、IP アドレスまたは Amazon 資格情報による可能性があります (ログインしているユーザーのみがバケットのコンテンツにアクセスできます。
これは可能ですか?
ありがとう
Amazon S3 で静的 Web サイトをホストしたいと考えていますが、アクセスを特定のユーザーに制限する必要があります。これは、IP アドレスまたは Amazon 資格情報による可能性があります (ログインしているユーザーのみがバケットのコンテンツにアクセスできます。
これは可能ですか?
ありがとう
はい、確かに可能です。あなたにとってより良い出発点は、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"
}
}
}
]
}
編集: 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:GetBucketLocation
andでのみ機能します (残念ながら、ここではフィルタリングできません。このポリシーを使用すると、すべてのバケット名がユーザー/グループに表示されます)。s3:ListAllMyBuckets
arn: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/*"
]
}
]
}
バケット/静的 Web サイトへのアクセスを特定の http リファラーに制限することもできます。そのため、そのサイトにログインしたユーザーのみが Amazon でホストされているサイトにアクセスできる wordpress メンバーシップ サイトを設定できます。例: mymembershipsite.com/members 。