Bucket Policy是OSS提供的一种针对存储空间(Bucket)的授权策略,使您可以精细化地授权或限制有身份的访问者(阿里云账号、RAM用户、RAM角色)或匿名访问者对指定OSS资源的访问。例如,您可以为其他阿里云账号的RAM用户授予指定OSS资源的只读权限。
注意事项
在配置Bucket Policy之前,请确保您已了解该功能。详情请参见Bucket Policy。
要设置Bucket Policy,您必须有
oss:PutBucketPolicy
权限;要获取Bucket Policy,您必须有oss:GetBucketPolicy
权限;要删除Bucket Policy,您必须有oss:DeleteBucketPolicy
权限。具体操作,请参见为RAM用户授权自定义的权限策略。
设置Bucket Policy
以下代码用于设置Bucket Policy:
const OSS = require('ali-oss')
const client = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,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的Bucket Owner)通过Bucket Policy授权指定用户(UID为20214760404935xxxx的RAM用户)拥有列举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()
获取Bucket Policy
以下代码用于获取Bucket Policy信息:
const OSS = require('ali-oss')
const client = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,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'
});
// 获取Bucket Policy配置信息。
async function getPolicy() {
const result = await client.getBucketPolicy('yourbucketname');
console.log(result.policy)
}
getPolicy()
删除Bucket Policy
以下代码用于删除Bucket Policy:
const OSS = require('ali-oss')
const client = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,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'
});
// 删除Bucket Policy。
async function deletePolicy() {
const result = await client.deleteBucketPolicy('yourbucketname');
console.log(result)
}
deletePolicy()
相关文档
关于Bucket Policy的完整示例代码,请参见GitHub示例。
关于设置Bucket Policy的API接口说明,请参见PutBucketPolicy。
关于获取Bucket Policy的API接口说明,请参见GetBucketPolicy。
关于删除Bucket Policy的API接口说明,请参见DeleteBucketPolicy。
文档内容是否对您有帮助?