OSS は、Alibaba Cloud STS サービスを使用して、アクセスの許可を一時的に付与することができます。
以下の手順に従って STS を使用します。
RAM コンソールにサブアカウントを作成します。詳細は、権限管理について を参照してください。
STSロールを作成し、サブアカウントの役割に権限を与えます。権限管理について を参照してください。
サブアカウントの AccessKeyID/AccessKeySecret を使用して、STS の一時トークンを取得します。
一時トークン内の認証情報を使用して、OSS クライアントを作成します。
OSS クライアントを使用して、OSS サービスにアクセスします。
以下の例に示すように、STS 経由で OSS にアクセスするには、stsToken
パラメーターを設定する必要があります。
var OSS = require('ali-oss');
var STS = OSS.STS;
var co = require('co');
var sts = new STS({
accessKeyId: '<AccessKeyId of the subaccount>',
accessKeySecret: '<AccessKeySecret of the subaccount>'
});
co(function* () {
var token = yield sts.assumeRole(
'<role-arn>', '<policy>', '<expiration>', '<session-name>');
var client = new OSS({
region: '<region>',
accessKeyId: token.credentials.AccessKeyId,
accessKeySecret: token.credentials.AccessKeySecret,
stsToken: token.credentials.SecurityToken,
bucket: '<bucket-name>'
});
}).catch(function (err) {
console.log(err);
});
STS の一時トークンを適用するときに、STS ポリシーをカスタマイズできます。リクエストされた一時許可は、役割に割り当てられた権限と STS ポリシーで指定された権限の論理積です。次のコードは、指定された STS ポリシーを使用する my-bucket
の読み取り専用権限に適用され、一時トークンの有効期間を 15 分に設定します。
var OSS = require('ali-oss');
var STS = OSS.STS;
var co = require('co');
var sts = new STS({
accessKeyId: '<AccessKeyId of the subaccount>',
accessKeySecret: '<AccessKeySecret of the subaccount>'
});
var policy = {
"Statement": [
{
"Action": [
"oss:Get*"
],
"Effect": "Allow",
"Resource": ["acs:oss:*:*:my-bucket/*"]
}
],
"Version": "1"
};
co(function* () {
var token = yield sts.assumeRole(
'<role-arn>', policy, 15 * 60, '<session-name>');
var client = new OSS({
region: '<region>',
accessKeyId: token.credentials.AccessKeyId,
accessKeySecret: token.credentials.AccessKeySecret,
stsToken: token.credentials.SecurityToken,
bucket: '<bucket-name>'
});
}).catch(function (err) {
console.log(err);
});