説明
IP 条件は、OSS アクセスを承認済みのネットワークに限定する追加の制御です。acs:SourceIp 条件がないだけで、バケットが公開されたり匿名アクセスが許可されたりするわけではありません。プリンシパルの権限とほかのネットワーク制御を併せて確認してください。
内部ストレージを特定の経路だけで利用する場合は、OSS が受け取る実際の要求元アドレスに合わせて条件を設定してください。インターネット経由の要求では、クライアントのプライベートアドレスではなく NAT などの公開送信元アドレスが使われる場合があります。
想定される影響
- 必要なネットワーク制限がないと、漏えいした認証情報を別の経路から悪用される可能性があります。
- 条件やアドレスを誤ると、正規のユーザーやサービスもアクセスできなくなる可能性があります。
対処方法
- 必要なネットワークと実際の要求元アドレスを確認し、
IpAddressまたはNotIpAddressとacs:SourceIpを正しく組み合わせてください。 - 一つの許可文に条件を加えることと、範囲外の要求を明示的に拒否することは異なります。ほかの許可文と拒否文も確認してください。
- 許可するクライアント、拒否するクライアント、サービス呼び出しを試験し、復旧に使える管理経路を確保してください。
例
従来のインラインポリシーの抜粋です。同じ既存バケットを変更する場合はリソースアドレスを維持してください。203.0.113.0/24 は文書用の範囲なので、実際の承認済み送信元範囲に置き換えてください。
送信元 IP 条件のない許可
hcl
resource "alicloud_oss_bucket" "bucket_policy" {
bucket = "bucket-170309-policy"
acl = "private"
policy = <<POLICY
{"Statement":
[{"Action":
["oss:PutObject", "oss:GetObject", "oss:DeleteBucket"],
"Effect":"Allow",
"Principal":["*"],
"Resource":
["acs:oss:*:*:bucket-170309-policy",
"acs:oss:*:*:bucket-170309-policy/*"]}],
"Version":"1"}
POLICY
}
すべてのプリンシパルに広い権限を要求するポリシーです。IP 条件に加え、不要なプリンシパルと操作も制限してください。
承認済み範囲外の要求の拒否
hcl
resource "alicloud_oss_bucket" "restricted_bucket" {
bucket = "bucket-170309-policy"
policy = <<POLICY
{
"Version": "1",
"Statement":
[
{
"Effect": "Deny",
"Action":
[
"oss:RestoreObject",
"oss:ListObjects",
"oss:AbortMultipartUpload",
"oss:PutObjectAcl",
"oss:GetObjectAcl",
"oss:ListParts",
"oss:DeleteObject",
"oss:PutObject",
"oss:GetObject"
],
"Principal":
[
"*"
],
"Resource":
[
"acs:oss:*:*:bucket-170309-policy",
"acs:oss:*:*:bucket-170309-policy/*"
],
"Condition":
{
"NotIpAddress":
{
"acs:SourceIp": "203.0.113.0/24"
}
}
}
]
}
POLICY
}
この拒否文は、指定した操作とリソースについて、承認済み IP 範囲外の要求を制限します。範囲内の要求に権限を与えるものではなく、必要な許可が別途必要です。バケット所有者やサービス呼び出しにも影響する可能性があります。