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

Object Storage Service:bucket-policy

最終更新日:Dec 20, 2023

バケットポリシーは、リソースベースの権限付与ポリシーです。 バケット所有者は、バケットポリシーを使用して、他のユーザーにObject Storage Service (OSS) の指定されたリソースへのアクセスを許可できます。 このトピックでは、bucket-policyコマンドを実行して、バケットのバケットポリシーを追加、変更、取得、または削除する方法について説明します。

使用上の注意

  • このトピックのサンプルコマンドラインは、64ビットLinuxシステムに基づいています。 他のシステムの場合は、を交換します。対応するバイナリ名を持つコマンドの /ossutil64。 詳細については、「ossutilの使用を開始する」をご参照ください。

  • バケットポリシーの詳細については、「概要」をご参照ください。

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

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

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

  • コマンド構文
    /ossutil64 bucket-policy -- メソッドput oss:// bucketname local_json_file

    次の表に、構文のパラメーターを示します。

    パラメーター説明
    bucketnameバケットポリシーを追加または変更するバケットの名前。
    local_json_ファイルバケットポリシーを設定するローカルJSONファイルの名前。
  • 例:
    1. ローカルデバイスにlocal_json_fileという名前のファイルを作成し、さまざまなシナリオに基づいてさまざまなバケットポリシーを作成します。

      次の例は、共通のバケットポリシーを設定する方法を示しています。

      説明 次の例は、ResourceパラメーターでUIDが174649585760 **** であるバケット所有者が、PrincipalパラメーターでUIDが20214760404935 **** であるRAMユーザーや匿名ユーザー * など、RAMユーザーに異なる権限を付与するようにバケットポリシーを構成する方法を示しています。
      • 指定されたIPアドレスからの匿名リクエストのみが、examplebucketという名前のバケット内のすべてのリソースにアクセスできるように指定します。
        {
            "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",
                    "プリンシパル": [
                        "*"
                    ],
                    "Resource": [
                        "acs:oss:*:174649585760 ****:examplebucket/*"
                    ]
                },
                {
                    "Action": [
                        "oss:ListObjects",
                        "oss:GetObject"
                    ],
                    "Condition": {
                        "StringLike": {
                            "oss:Prefix": [
                                "*"
                            ]
                        },
                        "IpAddress": {
                            "acs:SourceIp": [
                                "10.10.10.10"
                            ]
                        }
                    },
                    "Effect": "Allow",
                    "プリンシパル": [
                        "*"
                    ],
                    "Resource": [
                        "acs:oss:*:174649585760 ****:examplebucket"
                    ]
                }
            ],
            "バージョン": "1"
        } 
      • examplebucketという名前のバケット内のhangzhou/2020ディレクトリとhangzhou/2015ディレクトリに対して、指定されたResource Access Management (RAM) ユーザーに読み取り専用権限を付与します。
        {
            "Statement": [
                {
                    "Action": [
                        "oss:GetObject"、
                        "oss:GetObjectAcl" 、
                        "oss:ListObjects",
                        "oss:RestoreObject" 、
                        "oss:GetVodPlaylist" 、
                        "oss:ListObjectVersions" 、
                        "oss:GetObjectVersion" 、
                        "oss:GetObjectVersionAcl" 、
                        "oss:RestoreObjectVersion"
                    ],
                    "Effect": "Allow",
                    "プリンシパル": [
                        "20214760404935 ****"
                    ],
                    "Resource": [
                        "acs:oss:*:174649585760 ****:examplebucket/hangzhou/2020/*" 、
                        "acs:oss:*:174649585760 ****:examplebucket/hangzhou/2015/*"
                    ]
                },
                {
                    "Action": [
                        "oss:ListObjects",
                        "oss:GetObject"
                    ],
                    "Condition": {
                        "StringLike": {
                            "oss:Prefix": [
                                "hangzhou/2020/*" 、
                                "hangzhou/2015/*"
                            ]
                        }
                    },
                    "Effect": "Allow",
                    "プリンシパル": [
                        "20214760404935 ****"
                    ],
                    "Resource": [
                        "acs:oss:*:174649585760 ****:examplebucket"
                    ]
                }
            ],
            "バージョン": "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",
                    "プリンシパル": [
                        "*"
                    ],
                    "Resource": [
                        "acs:oss:*:174649585760 ****:examplebucket/hangzhou/2021/*"
                    ]
                },
                {
                    "Action": [
                        "oss:ListObjects",
                        "oss:GetObject"
                    ],
                    "Condition": {
                        "StringLike": {
                            "oss:Prefix": [
                                "hangzhou/2021/*"
                            ]
                        }
                    },
                    "Effect": "Deny",
                    "プリンシパル": [
                        "*"
                    ],
                    "Resource": [
                        "acs:oss:*:174649585760 ****:examplebucket"
                    ]
                }
            ],
            "バージョン": "1"
        } 
    2. examplebucketバケットにバケットポリシーを追加します。
      . /ossutil64 bucket-policy -- メソッドput oss:// examplebucket local_json_file

      同様の出力が表示される場合、バケットポリシーがexamplebucketバケットに追加されます。

      1.125101経過

バケットポリシーの取得

  • コマンド構文
    /ossutil64 bucket-policy -- method get oss:// bucketname local_json_file
    パラメーター説明
    bucketnameポリシーを取得するバケットの名前。
    local_json_ファイル取得したバケットポリシーを格納するために使用されるローカルJSONファイル。 このパラメーターを指定しない場合、取得したバケットポリシーはJSONファイルに保存されずに表示されます。
  • 例:

    次のコマンドを実行して、examplebucketという名前のバケットに設定されたバケットポリシーを取得できます。

    . /ossutil64 bucket-policy -- メソッドget oss:// examplebucket local_json_file

    同様の出力が表示されると、examplebucketのバケットポリシーが取得され、ローカルJSONファイルに書き込まれます。

    0.212407経過

バケットポリシーの削除

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

  • コマンド構文
    /ossutil64 bucket-policy -- メソッドdelete oss:// bucketname
  • 例:

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

    . /ossutil64 bucket-policy -- メソッドdelete oss:// examplebucket
    同様の出力が表示された場合、examplebucketに設定されたすべてのバケットポリシーが削除されます。
    0.530750が経過
    しました。

一般的なオプション

ossutilを使用して別のリージョンにあるバケットに切り替える場合は、コマンドに -eオプションを追加して、指定したバケットがあるリージョンのエンドポイントを指定します。 ossutilを使用して別のAlibaba Cloudアカウントに属するバケットに切り替える場合、コマンドに -iオプションを追加して、指定されたアカウントのAccessKey IDを指定し、コマンドに -kオプションを追加して、指定されたアカウントのAccessKeyシークレットを指定します。

たとえば、次のコマンドを実行して、中国 (杭州) リージョンにあり、別のAlibaba Cloudアカウントが所有するexamplebucketという名前のバケットのバケットポリシーを設定できます
。/ossutil64 bucket-policy -- メソッドput oss:// examplebucket local_json_file -e oss-cn-hangzhou.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA **** -k 67DLVBkH7EamOjy2W5RVAHUY9H ****

同期コマンドに使用できるその他の一般的なオプションの詳細については、「オプションの表示」をご参照ください。