edit-icon download-icon

STS を使用する OSS のアクセス

最終更新日: Nov 07, 2017

OSS は、Alibaba Cloud STS サービスを使用して、アクセスの許可を一時的に付与することができます。

以下の手順に従って STS を使用します。

  1. RAM コンソールにサブアカウントを作成します。詳細は、権限管理について を参照してください。

  2. STSロールを作成し、サブアカウントの役割に権限を与えます。権限管理について を参照してください。

  3. サブアカウントの AccessKeyID/AccessKeySecret を使用して、STS の一時トークンを取得します。

  4. 一時トークン内の認証情報を使用して、OSS クライアントを作成します。

  5. OSS クライアントを使用して、OSS サービスにアクセスします。

以下の例に示すように、STS 経由で OSS にアクセスするには、stsToken パラメーターを設定する必要があります。

  1. var OSS = require('ali-oss');
  2. var STS = OSS.STS;
  3. var co = require('co');
  4. var sts = new STS({
  5. accessKeyId: '<AccessKeyId of the subaccount>',
  6. accessKeySecret: '<AccessKeySecret of the subaccount>'
  7. });
  8. co(function* () {
  9. var token = yield sts.assumeRole(
  10. '<role-arn>', '<policy>', '<expiration>', '<session-name>');
  11. var client = new OSS({
  12. region: '<region>',
  13. accessKeyId: token.credentials.AccessKeyId,
  14. accessKeySecret: token.credentials.AccessKeySecret,
  15. stsToken: token.credentials.SecurityToken,
  16. bucket: '<bucket-name>'
  17. });
  18. }).catch(function (err) {
  19. console.log(err);
  20. });

STS の一時トークンを適用するときに、STS ポリシーをカスタマイズできます。リクエストされた一時許可は、役割に割り当てられた権限と STS ポリシーで指定された権限の論理積です。次のコードは、指定された STS ポリシーを使用する my-bucket の読み取り専用権限に適用され、一時トークンの有効期間を 15 分に設定します。

  1. var OSS = require('ali-oss');
  2. var STS = OSS.STS;
  3. var co = require('co');
  4. var sts = new STS({
  5. accessKeyId: '<AccessKeyId of the subaccount>',
  6. accessKeySecret: '<AccessKeySecret of the subaccount>'
  7. });
  8. var policy = {
  9. "Statement": [
  10. {
  11. "Action": [
  12. "oss:Get*"
  13. ],
  14. "Effect": "Allow",
  15. "Resource": ["acs:oss:*:*:my-bucket/*"]
  16. }
  17. ],
  18. "Version": "1"
  19. };
  20. co(function* () {
  21. var token = yield sts.assumeRole(
  22. '<role-arn>', policy, 15 * 60, '<session-name>');
  23. var client = new OSS({
  24. region: '<region>',
  25. accessKeyId: token.credentials.AccessKeyId,
  26. accessKeySecret: token.credentials.AccessKeySecret,
  27. stsToken: token.credentials.SecurityToken,
  28. bucket: '<bucket-name>'
  29. });
  30. }).catch(function (err) {
  31. console.log(err);
  32. });