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

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

最終更新日:May 06, 2024

バケットポリシーとアクセス制御リスト (ACL) を設定することで、Object Storage Service (OSS) リソースへのパブリックアクセスを許可できます。 パブリックアクセスは、特定の権限または認証なしでOSSリソースへのアクセスを指定します。 パブリックアクセスは、データ侵害を引き起こしやすく、悪意のあるアクセスによりインターネット上に大量のアウトバウンドトラフィックを生成する可能性があります。 パブリックアクセスによって引き起こされるリスクを防ぐために、OSSでは、OSS、バケット、アクセスポイント、およびObject FCアクセスポイントに対して、いくつかの手順でブロックパブリックアクセスを有効にできます。 ブロックパブリックアクセスを有効にすると、既存のパブリックアクセス権限は無視され、パブリックアクセス権限を設定できません。 これにより、パブリックデータアクセスチャネルが無効になり、データセキュリティが確保されます。

バケットポリシーとACLでパブリックアクセスが許可されているかどうかを確認

OSS、バケット、アクセスポイント、またはオブジェクトFCアクセスポイントへのパブリックアクセスが許可されているかどうかを確認するには、バケットACLとオブジェクトACLを含むバケットポリシーとACLを表示する必要があります。 バケットポリシーまたはACLでパブリックアクセスが許可されている場合、リソースが不正なユーザーに公開される可能性があります。 パブリックアクセスを防止するには、ブロックパブリックアクセスを有効にします。

バケットポリシー

(推奨) APIを呼び出して、バケットポリシーでパブリックアクセスが許可されているかどうかを確認します

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

  • IsPublicレスポンスパラメーターの値がtrueの場合、バケットポリシーでパブリックアクセスが許可されます。

  • IsPublicレスポンスパラメーターの値がfalseの場合、バケットポリシーでパブリックアクセスが拒否されます。

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

バケットポリシーを表示して、バケットポリシーでパブリックアクセスが許可されているかどうかを確認します

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

  • 特定の条件が満たされている場合にのみ、バケットポリシーでパブリックアクセスは許可されません。 次の表に条件を示します。

    説明
    • Action要素とResource要素は、バケットポリシーでパブリックアクセスが許可されているかどうかを確認するための条件としては使用されません。

    • バケットポリシーのEffect要素の値がDenyの場合、バケットポリシーのパブリックアクセスは拒否されます。

    要素

    フィールド

    依頼人

    N/A

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

    Condition

    acs:SourceVpcId

    acs:SourceVpcIp

    acs:SourceVpc

    acs:AccessId

    acs:SourceIp

    • IPv4アドレスの場合、マスクは8以上でなければなりません。

    • IPv6アドレスの場合、マスクは32以上でなければなりません。

  • 次のサンプルコードは、パブリックアクセスを拒否するバケットポリシーの例を示しています。

    {
        "バージョン":"1" 、
        "ステートメント":[
            {
                "Action":[
                    "oss:GetObject"、
                    "oss:GetObjectAcl" 、
                    "oss:GetObjectVersion" 、
                    "oss:GetObjectVersionAcl"
                ],
                "効果":"許可" 、
                "プリンシパル":[
                    "20214760404935xxxx"
                ],
                "Resource":[
                    "acs:oss:*:174649585760xxxx:examplebucket/hangzhou/2020/*" 、
                    "acs:oss:*:174649585760xxxx:examplebucket/shanghai/2015/*"
                ]
            },
            {
                "Action":[
                    "oss:ListObjects",
                    "oss:ListObjectVersions"
                ],
                "Condition":{
                    "StringLike":{
                        "oss: プレフィックス":[
                            "hangzhou/2020/*" 、
                            "上海 /2015/*"
                        ]
                    }
                },
                "効果":"許可" 、
                "プリンシパル":[
                    "20214760404935xxxx"
                ],
                "Resource":[
                    "acs:oss:*:174649585760xxxx:examplebucket"
                ]
            }
        ]
    }

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

非パブリックアクセスの条件の1つが満たされていない場合、バケットポリシーでパブリックアクセスが許可されます。 例:

  • 例 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:*",
                "プリンシパル": "27464958576xxxx" 、
                "Resource": "*"
            }
        ]
    }

ACL

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

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

ブロックパブリックアクセス設定の優先度

OSSでは、OSS、バケット、アクセスポイント、またはオブジェクトFCアクセスポイントのブロックパブリックアクセスを有効にできます。 ブロックパブリックアクセスの設定が異なる場合、OSSは次の優先順位を適用します。

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

パブリックアクセスが次のレベルで許可されるかどうかは、前のレベルのブロックパブリックアクセス設定によって異なります。 OSSでブロックパブリックアクセスが有効になっている場合、バケット、アクセスポイント、またはオブジェクトFCアクセスポイントへのパブリックアクセスは許可されません。

  • バケットへのパブリックアクセスを許可する場合は、OSSとバケットのブロックパブリックアクセスを無効にする必要があります。

  • アクセスポイントを使用してバケットへのパブリックアクセスを許可する場合は、アクセスポイントが関連付けられているバケット、およびアクセスポイントを無効にする必要があります。

  • オブジェクトFCアクセスポイントを使用してバケットへのパブリックアクセスを許可する場合は、OSSのブロックパブリックアクセス、バケットのアクセスポイント、アクセスポイントが関連付けられているバケット、およびオブジェクトFCアクセスポイントを無効にする必要があります。

使用上の注意

  • RAMユーザーを使用してバケットとアクセスポイントのブロックパブリックアクセスを有効にするには、RAMユーザーに次の権限が必要です。

    • OSSのブロックパブリックアクセスを有効にする: 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 コンソールの使用

OSSのブロックパブリックアクセスの有効化

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

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

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

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

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

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

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

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

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

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

  2. 左側のナビゲーションウィンドウで、エンドポイントリスト をクリックします。 [アクセスポイント] ページで、[パブリックアクセスのブロック] を有効にするアクセスポイントの名前をクリックします。

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

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

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

  2. 左側のナビゲーションウィンドウで、オブジェクト FC アクセスポイントリスト をクリックします。 [オブジェクトFCアクセスポイント] ページで、ブロックパブリックアクセスを有効にするオブジェクトFCアクセスポイントをクリックします。

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

OSS APIの使用

ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。

  • OSSのブロックパブリックアクセスを有効にするために呼び出すことができるAPI操作の詳細については、「PutPublicAccessBlock」をご参照ください。

  • バケットのブロックパブリックアクセスを有効にするために呼び出すことができるAPI操作の詳細については、「PutBucketPublicAccessBlock」をご参照ください。

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

  • オブジェクトFCアクセスポイントのブロックパブリックアクセスを有効にするために呼び出すAPI操作の詳細については、「PutAccessPointConfigForObjectProcess」をご参照ください。

参考資料

ブロックパブリックアクセスを使用すると、OSS、バケット、アクセスポイント、およびオブジェクトFCアクセスポイントへのアクセスを一元管理できます。 バケットまたはオブジェクト内の特定のリソースへのアクセスをきめ細かく管理するには、[バケットポリシー][オブジェクトACL] を一緒に使用する必要があります。