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

Object Storage Service:bucket-policy

最終更新日:Sep 24, 2026

バケットポリシーは、リソースベースの認可ポリシーです。バケット所有者はバケットポリシーを使用して、Object Storage Service (OSS) 内の特定のリソースへのアクセスを他のユーザーに許可できます。このトピックでは、bucket-policy コマンドを実行して、バケットポリシーの追加、変更、照会、削除を行う方法について説明します。

注意事項

  • バケットポリシーを追加または変更するには、oss:PutBucketPolicy 権限が必要です。バケットポリシーを照会するには、oss:GetBucketPolicy 権限が必要です。バケットポリシーを削除するには、oss:DeleteBucketPolicy 権限が必要です。詳細については、「カスタムポリシーの付与」をご参照ください。

  • ossutil 1.6.16 以降では、コマンドラインでバイナリ名として ossutil を直接使用できます。お使いのオペレーティングシステムに合わせてバイナリ名を変更する必要はありません。ossutil 1.6.16 より前のバージョンでは、お使いのオペレーティングシステムに合わせてバイナリ名を変更する必要があります。詳細については、「ossutil コマンドリファレンス」をご参照ください。

バケットポリシーの追加または変更

バケットポリシーを追加または変更する前に、ローカルコンピューターに JSON ファイルを作成し、その JSON ファイルにバケットポリシーを設定する必要があります。1 つの JSON ファイルに複数のバケットポリシーを設定できます。ただし、バケットポリシーの合計サイズは 16 KB を超えることはできません。

バケットポリシーを追加または変更すると、ossutil は JSON ファイルからバケットポリシーを読み取り、指定されたバケットにポリシーを追加します。バケットポリシーを追加すると、既存のバケットポリシーは上書きされます。

  • コマンド構文

    ossutil bucket-policy --method put oss://bucketname local_json_file

    次の表に、上記のパラメーターを説明します。

    パラメーター

    説明

    bucketname

    バケットポリシーを追加または変更する対象バケットの名前。

    local_json_file

    バケットポリシーを設定したローカル JSON ファイルの名前。

  • 例

    1. ローカルコンピューターに local_json_file という名前のファイルを作成し、さまざまなシナリオに基づいて異なるバケットポリシーを設定します。

      以下の例は、一般的なバケットポリシーの設定方法を示しています。

      説明

      以下の例では、Resource パラメーターの UID が 174649585760**** であるバケット所有者が、Principal パラメーターの UID が 20214760404935**** の RAM ユーザーや匿名ユーザー (*) といった他のユーザーに対し、さまざまな権限を付与するバケットポリシーの設定方法を説明します。

      • examplebucket バケット内のすべてのリソースへのアクセスを、指定したIPアドレスからの匿名リクエストのみに許可します。

        {
            "Statement": [
                {
                    "Action": [
                        "oss:GetObject",
                        "oss:GetObjectAcl",
                        "oss:ListObjects",
                        "oss:RestoreObject",
                        "oss:GetVodPlaylist",
                        "oss:ListObjectVersions",
                        "oss:GetObjectVersion",
                        "oss:GetObjectVersionAcl",
                        "oss:RestoreObjectVersion"
                    ],
                    "Condition": {
                        "IpAddress": {
                            "acs:SourceIp": [
                                "10.10.10.10"
                            ]
                        }
                    },
                    "Effect": "Allow",
                    "Principal": [
                        "*"
                    ],
                    "Resource": [
                        "acs:oss:*:174649585760xxxx:examplebucket/*"
                    ]
                },
                {
                    "Action": [
                        "oss:ListObjects",
                        "oss:GetObject"
                    ],
                    "Condition": {
                        "StringLike": {
                            "oss:Prefix": [
                                "*"
                            ]
                        },
                        "IpAddress": {
                            "acs:SourceIp": [
                                "10.10.10.10"
                            ]
                        }
                    },
                    "Effect": "Allow",
                    "Principal": [
                        "*"
                    ],
                    "Resource": [
                        "acs:oss:*:174649585760xxxx:examplebucket"
                    ]
                }
            ],
            "Version": "1"
        }
      • examplebucket バケットの hangzhou/2020 および hangzhou/2015 ディレクトリに対して、RAM ユーザーに読み取り専用権限を付与します。

        {
            "Statement": [
                {
                    "Action": [
                        "oss:GetObject",
                        "oss:GetObjectAcl",
                        "oss:ListObjects",
                        "oss:RestoreObject",
                        "oss:GetVodPlaylist",
                        "oss:ListObjectVersions",
                        "oss:GetObjectVersion",
                        "oss:GetObjectVersionAcl",
                        "oss:RestoreObjectVersion"
                    ],
                    "Effect": "Allow",
                    "Principal": [
                        "20214760404935xxxx"
                    ],
                    "Resource": [
                        "acs:oss:*:174649585760xxxx:examplebucket/hangzhou/2020/*",
                        "acs:oss:*:174649585760xxxx:examplebucket/hangzhou/2015/*"
                    ]
                },
                {
                    "Action": [
                        "oss:ListObjects",
                        "oss:GetObject"
                    ],
                    "Condition": {
                        "StringLike": {
                            "oss:Prefix": [
                                "hangzhou/2020/*",
                                "hangzhou/2015/*"
                            ]
                        }
                    },
                    "Effect": "Allow",
                    "Principal": [
                        "20214760404935xxxx"
                    ],
                    "Resource": [
                        "acs:oss:*:174649585760xxxx:examplebucket"
                    ]
                }
            ],
            "Version": "1"
        }
      • examplebucket バケットの hangzhou/2021/ ディレクトリ内のすべてのオブジェクトへの匿名リクエストを拒否します。

        {
            "Statement": [
                {
                    "Action": [
                        "oss:RestoreObject",
                        "oss:ListObjects",
                        "oss:AbortMultipartUpload",
                        "oss:PutObjectAcl",
                        "oss:GetObjectAcl",
                        "oss:ListParts",
                        "oss:DeleteObject",
                        "oss:PutObject",
                        "oss:GetObject",
                        "oss:GetVodPlaylist",
                        "oss:PostVodPlaylist",
                        "oss:PublishRtmpStream",
                        "oss:ListObjectVersions",
                        "oss:GetObjectVersion",
                        "oss:GetObjectVersionAcl",
                        "oss:RestoreObjectVersion"
                    ],
                    "Effect": "Deny",
                    "Principal": [
                        "*"
                    ],
                    "Resource": [
                        "acs:oss:*:174649585760xxxx:examplebucket/hangzhou/2021/*"
                    ]
                },
                {
                    "Action": [
                        "oss:ListObjects",
                        "oss:GetObject"
                    ],
                    "Condition": {
                        "StringLike": {
                            "oss:Prefix": [
                                "hangzhou/2021/*"
                            ]
                        }
                    },
                    "Effect": "Deny",
                    "Principal": [
                        "*"
                    ],
                    "Resource": [
                        "acs:oss:*:174649585760xxxx:examplebucket"
                    ]
                }
            ],
            "Version": "1"
        }
    2. examplebucket バケットにバケットポリシーを追加します。

      ossutil bucket-policy --method put oss://examplebucket local_json_file

      次の出力が表示された場合、バケットポリシーが examplebucket バケットに追加されたことを意味します。

      1.125101(s) elapsed

バケットポリシーの照会

  • コマンド構文

    ossutil bucket-policy --method get oss://bucketname local_json_file

    パラメーター

    説明

    bucketname

    バケットポリシーを照会する対象バケットの名前。

    local_json_file

    照会したバケットポリシーの保存先となるローカル JSON ファイル。このパラメーターを指定しない場合、照会結果はファイルに保存されずに表示されます。

  • 例

    次のコマンドを実行して、examplebucket という名前のバケットのバケットポリシーを照会します。

    ossutil bucket-policy --method get oss://examplebucket local_json_file

    次の出力が表示された場合、examplebucket のバケットポリシーが照会され、ローカル JSON ファイルに書き込まれたことを意味します。

    0.212407(s) elapsed

バケットポリシーの削除

バケットポリシーを使用して他のユーザーに OSS リソースへのアクセスを許可する必要がなくなった場合は、設定済みのバケットポリシーを削除します。

  • コマンド構文

    ossutil bucket-policy --method delete oss://bucketname
  • 例

    次のコマンドを実行して、examplebucket という名前のバケットのすべてのバケットポリシーを削除します。

    ossutil bucket-policy --method delete oss://examplebucket

    次の出力が表示された場合、examplebucket のすべてのバケットポリシーが削除されたことを意味します。

    0.530750(s) elapsed

共通オプション

別のリージョンのバケットにアクセスするには、 -e を使用してエンドポイントを指定します。 別の Alibaba Cloud アカウントが所有するバケットにアクセスするには、AccessKey ID には -i を、AccessKey secret には -k を使用します。

たとえば、次のコマンドを実行すると、中国 (杭州) リージョンにある、別の Alibaba Cloud アカウントが所有する examplebucket という名前のバケットにバケットポリシーを設定できます。

ossutil bucket-policy --method put oss://examplebucket local_json_file -e oss-cn-hangzhou.aliyuncs.com -i yourAccessKeyID -k yourAccessKeySecret

詳細については、「共通オプション」をご参照ください。