バケットポリシーは、Object Storage Service (OSS) バケットの権限付与ポリシーです。 バケットポリシーを使用すると、Alibaba Cloud アカウント、Resource Access Management (RAM) ユーザー、RAM ロールなどの認証済みユーザー、または匿名ユーザーに対して、特定の OSS リソースへのアクセスを許可または制限できます。 たとえば、別の Alibaba Cloud アカウントの RAM ユーザーに、指定された OSS リソースへの読み取り専用権限を付与できます。
注意事項
バケットポリシーを設定する前に、この機能の仕組みを理解していることを確認してください。 詳細については、「バケットポリシー」をご参照ください。
バケットポリシーを設定するには、
oss:PutBucketPolicy権限が必要です。 バケットポリシーを取得するには、oss:GetBucketPolicy権限が必要です。 バケットポリシーを削除するには、oss:DeleteBucketPolicy権限が必要です。 権限を付与する方法の詳細については、「RAM ユーザーへのカスタムアクセスポリシーの付与」をご参照ください。
バケットポリシーの設定
次のコードは、バケットポリシーを設定する方法を示しています。
const OSS = require('ali-oss')
const client = new OSS({
// バケットが配置されているリージョンに region を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、region を oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス認証情報を取得します。 このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// バケット名を指定します。 例: examplebucket。
bucket: 'examplebucket'
});
// この例では、リソース所有者 (UID 174649585760xxxx のバケット所有者) は、バケットポリシーを使用して、RAM ユーザー (UID 20214760404935xxxx) に examplebucket バケット内のオブジェクトをリストして取得する権限を付与します。
const policy = {
Version: '1',
Statement: [
{
Action: ['oss:ListObjects', 'oss:GetObject'],
Effect: 'Allow',
Principal: ['20214760404935xxxx'],
Resource: ['acs:oss:*:174649585760xxxx:examplebucket']
}
]
};
async function putPolicy() {
const result = await client.putBucketPolicy('examplebucket', policy);
console.log(result)
}
putPolicy()バケットポリシーの取得
次のコードは、バケットポリシーを取得する方法を示しています。
const OSS = require('ali-oss')
const client = new OSS({
// バケットが配置されているリージョンに region を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、region を oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス認証情報を取得します。 このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// バケット名を指定します。
bucket: 'yourbucketname'
});
// バケットポリシー構成を取得します。
async function getPolicy() {
const result = await client.getBucketPolicy('yourbucketname');
console.log(result.policy)
}
getPolicy()バケットポリシーの削除
次のコードは、バケットポリシーを削除する方法を示しています。
const OSS = require('ali-oss')
const client = new OSS({
// バケットが配置されているリージョンに region を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、region を oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス認証情報を取得します。 このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// バケット名を指定します。
bucket: 'yourbucketname'
});
// バケットポリシーを削除します。
async function deletePolicy() {
const result = await client.deleteBucketPolicy('yourbucketname');
console.log(result)
}
deletePolicy()関連ドキュメント
バケットポリシーの完全なサンプルコードについては、「GitHub」をご参照ください。
バケットポリシーを設定する API 操作の詳細については、「PutBucketPolicy」をご参照ください。
バケットポリシーを取得する API 操作の詳細については、「GetBucketPolicy」をご参照ください。
バケットポリシーを削除する API 操作の詳細については、「DeleteBucketPolicy」をご参照ください。