バケットポリシーは、リソースベースの権限付与ポリシーです。 バケット所有者は、バケットポリシーを使用して、他のユーザーに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ファイルの名前。 - 例:
- ローカルデバイスに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" }
- 指定されたIPアドレスからの匿名リクエストのみが、examplebucketという名前のバケット内のすべてのリソースにアクセスできるように指定します。
- examplebucketバケットにバケットポリシーを追加します。
. /ossutil64 bucket-policy -- メソッドput oss:// examplebucket local_json_file
同様の出力が表示される場合、バケットポリシーがexamplebucketバケットに追加されます。
1.125101経過
- ローカルデバイスにlocal_json_fileという名前のファイルを作成し、さまざまなシナリオに基づいてさまざまなバケットポリシーを作成します。
バケットポリシーの取得
- コマンド構文
/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シークレットを指定します。
。/ossutil64 bucket-policy -- メソッドput oss:// examplebucket local_json_file -e oss-cn-hangzhou.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA **** -k 67DLVBkH7EamOjy2W5RVAHUY9H ****
同期コマンドに使用できるその他の一般的なオプションの詳細については、「オプションの表示」をご参照ください。