すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:パブリックアクセスのブロック

最終更新日:Nov 09, 2025

バケットポリシーとアクセス制御リスト (ACL) を設定することで、Object Storage Service (OSS) リソースへのパブリックアクセスを許可できます。パブリックアクセスには特定の権限や ID 検証が不要なため、データ漏洩や不要なアウトバウンドインターネットトラフィックのリスクが高まります。これらのリスクを軽減するため、OSS ではアカウントレベル、個々のバケット、アクセスポイント、または Object FC アクセスポイントでパブリックアクセスのブロックを有効にできます。この機能を有効にすると、既存のパブリック権限は無視され、新しいパブリック権限の付与が防止されるため、データセキュリティの確保に役立ちます。

リソースがパブリックにアクセス可能かどうかの判断

バケットポリシーと、バケット ACL やオブジェクト ACL を含むアクセス制御リスト (ACL) を確認して、OSS リソースがパブリックにアクセス可能かどうかを判断できます。いずれかの設定でパブリックアクセスが許可されている場合、リソースはリスクにさらされているため、パブリックアクセスのブロックを有効にする必要があります。

バケットポリシー

(推奨) API 操作の呼び出し

GetBucketPolicyStatus 操作を呼び出して、現在のバケットポリシーがパブリックアクセスを許可しているかどうかを確認できます。

  • IsPublic 応答フィールドが true に設定されている場合、現在のバケットポリシーはパブリックアクセスを許可しています。

  • IsPublic 応答フィールドが false に設定されている場合、現在のバケットポリシーはパブリックアクセスを許可していないか、バケットポリシーが設定されていません。

詳細については、「GetBucketPolicyStatus」をご参照ください。

手動チェック

非パブリックアクセスの条件と例

  • バケットポリシー内の文は、その Principal または Condition 要素が次のいずれかの条件を満たす場合、非パブリックと見なされます。

    説明
    • Action および Resource 要素は、アクセスがパブリックであるかどうかを判断するための条件としては使用されません。

    • バケットポリシーの Effect が Deny の場合、その文は非パブリックと見なされます。

    要素

    フィールド

    Principal

    N/A

    1 つ以上の静的フィールドを指定します。値にアスタリスク (*) ワイルドカードを含めることはできません。

    Condition

    acs:SourceVpcId

    1 つ以上の静的フィールドを指定します。値にアスタリスク (*) ワイルドカードを含めることはできません。

    acs:SourceVpc

    1 つ以上の静的フィールドを指定します。値にアスタリスク (*) ワイルドカードを含めることはできません。

    acs:AccessId

    1 つ以上の静的フィールドを指定します。値にアスタリスク (*) ワイルドカードを含めることはできません。

    acs:SourceVpcIp

    IPv4 アドレスの場合、マスクは 8 以上である必要があります。

    IPv6 アドレスの場合、マスクは 32 以上である必要があります。

    acs:SourceIp

    IPv4 アドレスの場合、マスクは 8 以上である必要があります。

    IPv6 アドレスの場合、マスクは 32 以上である必要があります。

  • 非パブリックアクセスの例

    {
        "Version":"1",
        "Statement":[
            {
                "Action":[
                    "oss:GetObject",
                    "oss:GetObjectAcl",
                    "oss:GetObjectVersion",
                    "oss:GetObjectVersionAcl"
                ],
                "Effect":"Allow",
                "Principal":[
                    "20214760404935xxxx"
                ],
                "Resource":[
                    "acs:oss:*:174649585760xxxx:examplebucket/hangzhou/2020/*",
                    "acs:oss:*:174649585760xxxx:examplebucket/shanghai/2015/*"
                ]
            },
            {
                "Action":[
                    "oss:ListObjects",
                    "oss:ListObjectVersions"
                ],
                "Condition":{
                    "StringLike":{
                        "oss:Prefix":[
                            "hangzhou/2020/*",
                            "shanghai/2015/*"
                        ]
                    }
                },
                "Effect":"Allow",
                "Principal":[
                    "20214760404935xxxx"
                ],
                "Resource":[
                    "acs:oss:*:174649585760xxxx:examplebucket"
                ]
            }
        ]
    }

パブリックアクセスの条件と例

バケットポリシーが非パブリックアクセスの条件を満たさない場合、パブリックアクセスを許可していると見なされます。以下にいくつかの例を示します。

  • 例 1

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "oss:GetObject",
                "Principal": "*",
                "Resource": "acs:oss:*:17464958576xxxx:examplebucket/*"
            }
        ]
    }
  • 例 2

    ポリシーにパブリックアクセス (すべての VPC からのアクセスを許可) と非パブリックアクセス (指定されたユーザーからのアクセスのみを許可) の両方を許可する文が含まれている場合でも、そのポリシーはパブリックアクセスを許可していると見なされます。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "oss:GetObject",
                "Principal": "*",
                "Resource": "acs:oss:*:17464958576xxxx:examplebucket/*",
                "Condition": {
                    "StringLike": {
                        "acs:SourceVpc": [
                            "vpc-*"
                            ]
                    }
                }
            },
          	{
                "Effect": "Allow",
                "Action": "oss:*",
                "Principal": "27464958576xxxx",
                "Resource": "*"
            }
        ]
    }

ACL

  • バケット ACL またはオブジェクト ACL が public-read または public-read-write に設定されている場合、パブリックアクセスが許可されます。

  • バケット ACL とオブジェクト ACL の両方が private に設定されている場合、パブリックアクセスは許可されません。

異なるレベルでのパブリックアクセスのブロック設定の優先度

OSS は、アカウント、バケット、アクセスポイント、および Object FC アクセスポイントのレベルでパブリックアクセスのブロックを有効にすることをサポートしています。これらのレベルでパブリックアクセスのブロック設定が一致しない場合、OSS は次の優先順位を使用して有効なアクセス権限を決定します。

Account > Bucket > Access point > Object FC Access Point

この優先順位に基づき、より高いレベルでのパブリックアクセスのブロック設定が、より低いレベルでのパブリックアクセスが許可されるかどうかを決定します。アカウントレベルでパブリックアクセスのブロックが有効になっている場合、どのバケット、アクセスポイント、または Object FC アクセスポイントでもパブリックアクセスは許可されません。

  • バケットへのパブリックアクセスを許可するには、アカウントレベルおよびそのバケットでパブリックアクセスのブロックを無効にします。

  • アクセスポイントへのパブリックアクセスを許可するには、アカウントレベル、そのアクセスポイントに関連付けられたバケット、およびそのアクセスポイントでパブリックアクセスのブロックを無効にします。

  • Object FC アクセスポイントへのパブリックアクセスを許可するには、アカウントレベル、その Object FC アクセスポイントに関連付けられたアクセスポイント、そのアクセスポイントに関連付けられたバケット、およびその Object FC アクセスポイントでパブリックアクセスのブロックを無効にします。

使用上の注意

  • Resource Access Management (RAM) ユーザーがパブリックアクセスをブロックするには、次の権限が必要です。

    • アカウントレベル: oss:PutPublicAccessBlockoss:GetPublicAccessBlock、および oss:DeletePublicAccessBlock

    • バケットレベル: oss:PutBucketPublicAccessBlockoss:GetBucketPublicAccessBlock、および oss:DeleteBucketPublicAccessBlock

    • アクセスポイントレベル: oss:PutAccessPointPublicAccessBlockoss:GetAccessPointPublicAccessBlock、および oss:DeleteAccessPointPublicAccessBlock

    • Object FC アクセスポイントレベル: oss:PutAccessPointConfigForObjectProcessoss:GetAccessPointConfigForObjectProcess、および oss:DeleteAccessPointForObjectProcess

  • パブリックアクセスのブロックが有効になっている場合、既存のパブリックアクセス権限は無視され、新しいパブリックアクセス権限を作成することはできません。パブリックアクセスのブロックが無効になっている場合、既存の権限が有効になり、新しいパブリックアクセス権限を作成できます。

  • バケットポリシーが誰でもアクセスポイントの管理 API 操作を呼び出せるように設定されている場合、アクセスポイントでパブリックアクセスのブロックが有効になっていても、ユーザーはバケットの第 3 レベルドメイン名を使用してそのパブリックアクセスのブロック設定を変更できます。これは、バケットの第 3 レベルドメイン名を使用して行われたリクエストは、アクセスポイントの設定の影響を受けないためです。

  • クロスリージョンレプリケーション (CRR) または同一リージョンレプリケーション (SRR) の場合、ソースバケットと宛先バケットでパブリックアクセスのブロックが有効になっているかどうかに関係なく、レプリケーション後にオブジェクトの ACL は保持されます。宛先バケットでパブリックアクセスのブロックが有効になっている場合、レプリケートされたオブジェクトの ACL が public-read または public-read-write であっても、それらのオブジェクトにパブリックにアクセスすることはできません。

方法

OSS コンソールの使用

アカウントレベルでパブリックアクセスのブロックを有効にする

  1. OSS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、データサービス > 公開アクセス禁止 を選択します。

  3. 公開アクセス禁止 ページで、パブリックアクセスのブロックを有効にし、画面の指示に従います。

バケットのパブリックアクセスのブロックを有効にする

  1. OSS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで バケット をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションウィンドウで、権限管理 > 公開アクセス禁止 を選択します。

  4. 公開アクセス禁止 タブで、パブリックアクセスのブロックを有効にし、画面の指示に従います。

アクセスポイントのパブリックアクセスのブロックを有効にする

  1. OSS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで エンドポイントリスト をクリックし、目的のアクセスポイントをクリックします。

  3. エンドポイントの基本情報 セクションで、パブリックアクセスのブロックを有効にし、画面の指示に従います。

Object FC アクセスポイントのパブリックアクセスのブロックを有効にする

  1. OSS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで オブジェクト FC アクセスポイントリスト をクリックし、目的の Object FC アクセスポイントをクリックします。

  3. FC アクセスポイントの基本情報 セクションで、パブリックアクセスのブロックを有効にし、画面の指示に従います。

ossutil コマンドラインインターフェイスの使用

ossutil コマンドラインインターフェイス (CLI) を使用して、パブリックアクセスのブロックを設定できます。ossutil のインストール方法の詳細については、「ossutil のインストール」をご参照ください。

  • 次のコマンドは、アカウントレベルでパブリックアクセスのブロックを有効にします。

    ossutil api put-public-access-block --public-access-block-configuration "{\"BlockPublicAccess\":\"true\"}"

    このコマンドの詳細については、「put-public-access-block」をご参照ください。

  • 次のコマンドは、examplebucket バケットのパブリックアクセスのブロックを有効にします。

    ossutil api put-bucket-public-access-block --bucket examplebucket --public-access-block-configuration "{\"BlockPublicAccess\":\"true\"}"

    このコマンドの詳細については、「put-bucket-public-access-block」をご参照ください。

  • 次のコマンドは、ap-01 アクセスポイントのパブリックアクセスのブロックを有効にします。

    ossutil api put-access-point-public-access-block --bucket examplebucket --access-point-name ap-01 --public-access-block-configuration "{\"BlockPublicAccess\":\"true\"}"

    このコマンドの詳細については、「put-access-point-public-access-block」をご参照ください。

関連 API 操作

プログラムに高いカスタマイズ要件がある場合は、直接 REST API リクエストを行うことができます。そのためには、署名を計算するためのコードを手動で記述する必要があります。

  • アカウントレベルでのパブリックアクセスのブロックの API 操作の詳細については、「PutPublicAccessBlock」をご参照ください。

  • バケットのパブリックアクセスのブロックの API 操作の詳細については、「PutBucketPublicAccessBlock」をご参照ください。

  • アクセスポイントのパブリックアクセスのブロックの API 操作の詳細については、「PutAccessPointPublicAccessBlock」をご参照ください。

  • Object FC アクセスポイントのパブリックアクセスのブロックの API 操作の詳細については、「PutAccessPointConfigForObjectProcess」をご参照ください。

リファレンス

パブリックアクセスのブロックを使用すると、アカウントレベル、および個々のバケット、アクセスポイント、Object FC アクセスポイントで権限を一元管理できます。バケット内のリソースや個々のオブジェクトをより詳細に制御するには、バケットポリシーオブジェクト ACL を使用できます。