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

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

最終更新日:Aug 15, 2026

パブリックアクセスブロックは、アカウント、バケット、アクセスポイント、またはオブジェクト FC アクセスポイントのレベルで Object Storage Service (OSS) リソースへの匿名アクセスを防止します。有効にすると、既存のパブリックアクセス許可は無視され、新しいアクセス許可を作成できなくなります。

バケットポリシーと ACL におけるパブリックアクセスの確認

バケットポリシーと ACL を確認し、オブジェクトがパブリックアクセス可能かどうかを調べます。いずれかがパブリックアクセスを許可している場合は、パブリックアクセスブロックを有効にします。

バケットポリシー

(推奨) GetBucketPolicyStatus API の呼び出し

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

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

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

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

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

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

  • バケットポリシーステートメントのプリンシパルまたは Condition 要素がこれらの基準のいずれかを満たす場合、そのステートメントは非パブリックです。

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

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

    要素

    フィールド

    プリンシパル

    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 がパブリック読み取りまたはパブリック読み取り/書き込みの場合、パブリックアクセスが許可されます。

  • バケット ACL とオブジェクト ACL の両方がプライベートの場合、パブリックアクセスは拒否されます。

パブリックアクセスブロックの優先順位

パブリックアクセスブロックは、アカウント、バケット、アクセスポイント、およびオブジェクト 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

  • 有効にすると、既存のパブリックアクセス許可は無視され、新しいアクセス許可を設定できなくなります。無効にすると、既存のアクセス許可が再び有効になり、新しいアクセス許可を設定できるようになります。

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

  • クロスリージョンレプリケーション (CRR) および同一リージョンレプリケーション (SRR) 中、オブジェクト ACL はパブリックアクセスブロックの設定に関係なく保持されます。宛先バケットでパブリックアクセスブロックが有効になっている場合、レプリケートされたオブジェクトの ACL がパブリック読み取りまたはパブリック読み取り/書き込みであっても、そのオブジェクトにパブリックアクセスすることはできません。

方法

OSS コンソールの使用

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

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

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

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

デフォルトでは、OSS 全体のパブリックアクセスブロックは無効 (BlockPublicAccess=false) になっており、有効にするまでパブリックアクセスが許可されます。GetPublicAccessBlock 操作を呼び出して現在の状態を確認し、PutPublicAccessBlock を呼び出すか、前の手順で説明したコンソールスイッチを使用して有効にすることができます。

クラウドガバナンスセンターの EnrollAccount 操作を使用して ResourceAccount タイプのメンバーアカウントを作成した場合、そのアカウントは OSS コンソールに直接ログインして上記の手順を完了することはできません。 アカウントのサインインとロール切り替えのエントリは無効化されており、AliyunRDAdminAccessRole ロールに対して AssumeRole を呼び出しても EntityNotExist.Role エラーで失敗します。 この種のメンバーアカウントで OSS 全体のパブリックアクセスブロックを有効にするには、まずメンバーアカウント用に RAM ロールを作成し、そのロールで AssumeRole を呼び出して一時的な認証情報を取得してから、その認証情報を使用して PutPublicAccessBlock 操作を呼び出します。

クラウドガバナンスセンターのアカウントベースラインには、設定項目として OSS のパブリックアクセスブロックが含まれていないため、メンバーアカウントが登録されても自動的には有効になりません。メンバーアカウントごとに、コンソールを介して、または PutPublicAccessBlock を呼び出して、パブリックアクセスブロックを個別に有効にする必要があります。コンソールに直接ログインできないメンバーアカウントの場合は、前述の RAM ロールと AssumeRole メソッドを使用します。

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

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

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

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

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

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

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

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

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

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

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

  2. 左側のナビゲーションペインで、オブジェクト FC アクセスポイントリスト をクリックします。対象の Object 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 をパブリック読み取りからプライベートに変更した後にパブリックアクセスブロックを有効にすると、バケット内のオブジェクトへの匿名 URL リクエストに対して 403 Forbidden が返されます。匿名アクセスに依存するビジネスは中断されます。一般的なエラーレスポンスは次のようになります:

AccessDenied
You have no right to access this object because of bucket acl.

バケットをパブリック読み取りに公開することなくアクセスを復元するには、匿名アクセスの代わりに次のいずれかの方法を使用します:

  • 署名付き URL:指定された期間の一時的なアクセスを許可します。短期間または一度限りのアクセスシナリオでこの方法を使用します。

  • バケットポリシー:特定のアカウント、IP アドレス、またはリファラーに長期的なアクセスを許可します。既知の固定された呼び出し元セットを継続的に承認する必要がある場合にこの方法を使用します。

この変更を本番バケットに適用する前に、テストバケットで新しいアクセス方法を検証し、オフピーク時に変更を適用してビジネスに影響がないことを確認してから展開してください。

よくある質問

パブリックアクセスブロックが有効になっているためにバケットポリシーを作成できない場合はどうすればよいですか?

バケットでパブリックアクセスブロックが有効になっている場合、パブリックアクセスを許可するバケットポリシー (たとえば、Principal* に設定するものなど) は拒否されます。リクエストは失敗し、HTTP 403 エラーとエラーメッセージ Put public bucket policy is not allowed が返されます。パブリックアクセスを許可するバケットポリシーを作成するには、まずバケットのパブリックアクセスブロックを無効にする必要があります。その後、バケットポリシーを作成できます。

パブリックアクセスブロックを無効にするにはどうすればよいですか?

次の手順では、バケットレベルを例として使用します:

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

  2. 左側のナビゲーションペインで、バケット をクリックします。表示されたページで、対象のバケット名をクリックします。

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

  4. 公開アクセス禁止 タブで、パブリックアクセスブロックをオフにします。

  5. 表示される確認ダイアログボックスに、ダイアログボックスに表示されている確認フレーズを入力し、[OK] をクリックします。

パブリックアクセスブロックを無効にすると、既存のパブリックアクセス許可が再び有効になります。ACL がパブリック読み取りのバケットの場合、匿名ユーザーは再びバケット内のオブジェクトにアクセスできるようになります。

パブリックアクセスブロックを無効にした後、セキュリティリスクはありますか?

パブリックアクセスブロックを無効にすると、以前は無視されていたバケット ACL とバケットポリシーのアクセス許可が直ちに有効になります。パブリックアクセスブロックを無効にする前に、次のことを確認してください:

  • バケット ACL がプライベートに設定されていること。

  • オブジェクト ACL がプライベートに設定されていること。

  • バケットポリシーが意図しないパブリックアクセスを許可していないこと。

関連ドキュメント

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

モニタリングとアラート

公開アクセス禁止 のステータスの変更は管理操作であり、リアルタイムのアクセスログには記録されません。ステータスの変更を監視し、アラートを設定するには、ActionTrail のイベント追跡または API ポーリングを使用します。

ActionTrail イベント追跡 (推奨)

  1. [ActionTrail コンソール] で、証跡を作成します。イベントタイプを管理イベントに設定し、イベントを [Simple Log Service (SLS)] に配信します。

  2. [イベントアラート] ページで、アラートルールを作成し、イベント名を PutBucketPublicAccessBlockDeleteBucketPublicAccessBlock に設定します。

  3. 公開アクセス禁止 のステータスが変更されると、アラート通知がトリガーされます。

API ポーリング

GetPublicAccessBlock オペレーションを呼び出して、アカウントレベルの 公開アクセス禁止 設定ステータスを取得します。結果をカスタムメトリックとして Cloud Monitor に報告し、しきい値ベースのアラートルールを設定します。