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

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

最終更新日:Jun 03, 2026

パブリックアクセスブロックは、OSS リソースへの匿名アクセスを防止します。アカウント、バケット、アクセスポイント、またはオブジェクト FC アクセスポイントのレベルでこの機能を有効にすると、バケットポリシーと ACL に存在するパブリックアクセス権限が無視され、新しいパブリックアクセス権限がブロックされます。

バケットポリシーと ACL でのパブリックアクセスの確認

バケットポリシーと ACL (バケット ACL とオブジェクト ACL) を確認して、OSS オブジェクトがパブリックアクセス可能かどうかを判断します。いずれかの権限でパブリックアクセスが許可されている場合は、パブリックアクセスブロックを有効にしてください。

バケットポリシー

(推奨) GetBucketPolicyStatus API の呼び出し

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

  • IsPublic が true の場合、バケットポリシーはパブリックアクセスを許可します。

  • IsPublic が false の場合、バケットポリシーはパブリックアクセスを許可しません。

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

バケットポリシー設定の手動確認

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

  • バケットポリシーのステートメントは、そのプリンシパルまたは条件要素が次のいずれかの基準を満たす場合、非パブリックと見なされます。

    説明
    • Action 要素と Resource 要素は、パブリックアクセスの評価に影響しません。

    • Effect 要素が Deny の場合、ポリシーはパブリックアクセスを許可しません。

    要素

    フィールド

    プリンシパル

    N/A

    アスタリスク (*) ワイルドカードを含まない 1 つ以上の固定値。

    条件

    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

    バケットポリシーに、すべての Virtual Private Cloud (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 の場合、パブリックアクセスは拒否されます。

異なるレベルにおけるパブリックアクセスブロックの優先順位

パブリックアクセスブロックは、アカウント、バケット、アクセスポイント、およびオブジェクト FC アクセスポイントのレベルで有効にできます。複数のレベルで設定されている場合、OSS は次の優先順序を適用します:

アカウント > バケット > アクセスポイント > オブジェクト FC アクセスポイント

上位レベルの設定は、競合する下位レベルの設定を上書きします。例えば、アカウントレベルでパブリックアクセスブロックを有効にすると、個々の設定に関係なく、すべてのバケット、アクセスポイント、およびオブジェクト FC アクセスポイントのパブリックアクセスがブロックされます。

  • バケットへのパブリックアクセスを許可するには、アカウントレベルとバケットの両方でパブリックアクセスブロックを無効にする必要があります。

  • アクセスポイントを介したパブリックアクセスを許可するには、アカウントレベル、関連するバケット、およびアクセスポイントでパブリックアクセスブロックを無効にする必要があります。

  • オブジェクト FC アクセスポイントを介したパブリックアクセスを許可するには、アカウントレベル、バケット、関連するアクセスポイント、およびオブジェクト FC アクセスポイントでパブリックアクセスブロックを無効にする必要があります。

使用上の注意

  • RAM ユーザーがパブリックアクセスブロックを管理するには、次の権限が必要です:

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

    • 各バケット:oss:PutBucketPublicAccessBlockoss:GetBucketPublicAccessBlock、および oss:DeleteBucketPublicAccessBlock

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

    • 各オブジェクト FC アクセスポイント:oss:PutAccessPointConfigForObjectProcessoss:GetAccessPointConfigForObjectProcess、および oss:DeleteAccessPointForObjectProcess

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

  • バケットポリシーがすべてのユーザーにアクセスポイントの管理を許可している場合、アクセスポイントに対してパブリックアクセスブロックが有効になっていても、ユーザーはバケットの第 3 レベルのドメイン名を通じてアクセスポイントのパブリックアクセスブロックのステータスを変更できます。アクセスポイントの設定は、バケットのサブドメインを介して行われたリクエストには適用されません。

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

方法

OSS コンソールの使用

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

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

  2. 左側メニューで、データサービス > 公開アクセス禁止 を選択します。

  3. 公開アクセス禁止 ページで、パブリックアクセスブロックをオンにし、画面の指示に従って操作を完了します。

バケットでのパブリックアクセスブロックの有効化

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

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

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

  4. 公開アクセス禁止 タブで、パブリックアクセスブロックをオンにし、画面の指示に従って操作を完了します。

アクセスポイントでのパブリックアクセスブロックの有効化

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

  2. 左側メニューで、エンドポイントリスト をクリックします。対象のアクセスポイントをクリックします。

  3. エンドポイントの基本情報 セクションで、パブリックアクセスブロックの横にある [有効化] をクリックし、画面の指示に従って操作を完了します。

オブジェクト FC アクセスポイントでのパブリックアクセスブロックの有効化

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

  2. 左側メニューで、オブジェクト FC アクセスポイントリスト をクリックします。対象のオブジェクト FC アクセスポイントをクリックします。

  3. FC アクセスポイントの基本情報 セクションで、パブリックアクセスブロックの横にある [有効化] をクリックし、画面の指示に従って操作を完了します。

ossutil の使用

ossutil を使用してパブリックアクセスブロックを有効にできます。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

RESTful API を直接呼び出すことができます。署名の計算をコードに含める必要があります。

  • アカウントレベルでパブリックアクセスをブロックするには、「PutPublicAccessBlock」をご参照ください。

  • バケットのパブリックアクセスをブロックするには、「PutBucketPublicAccessBlock」をご参照ください。

  • アクセスポイントのパブリックアクセスをブロックするには、「PutAccessPointPublicAccessBlock」をご参照ください。

  • オブジェクト FC アクセスポイントのパブリックアクセスをブロックするには、「PutAccessPointConfigForObjectProcess」をご参照ください。

関連トピック

バケット内のオブジェクトレベルのアクセスを制御するには、パブリックアクセスブロックをバケットポリシーおよびオブジェクト ACL と組み合わせます。