edit-icon download-icon

STSを利用してOSSにアクセスする

最終更新日: Aug 29, 2017

OSSはAlibaba Cloud STSサービスを介してアクセスの許可を一時的に付与することができます。 STSの詳細についてはAlibaba Cloud STSを参照してください。

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

  1. Alibaba Cloud コンソールにログインしてサブアカウントを作成します。 詳細はOSS STSを参照してください。
  2. コンソールにて STS ロールを作成し、こちらのロールに権限を付与します。 詳細は OSS STSを参照してください。
  3. サブアカウントの AccessKeyID / AccessKeySecret を使用してSTSから一時的なトークンを申請します。
  4. トークンの認証情報を使用して OSS クライアントを作成します。
  5. OSS クライアントを使用して OSS サービスにアクセスします。

STS 経由で OSS にアクセスするには、 :sts_tokenパラメータを設定する必要があります。 次の例を参照してください。

  1. require 'aliyun/sts'
  2. require 'aliyun/oss'
  3. sts = Aliyun::STS::Client.new(
  4. access_key_id: '<AccessKeyId of the subaccount>',
  5. access_key_secret: '<AccessKeySecret of the subaccount>')
  6. token = sts.assume_role('<role-arn>', '<session-name>')
  7. client = Aliyun::OSS::Client.new(
  8. endpoint: '<endpoint>',
  9. access_key_id: token.access_key_id,
  10. access_key_secret: token.access_key_secret,
  11. sts_token: token.security_token)
  12. bucket = client.get_bucket('my-bucket')

STS サービスからの一時的なトークンを申請するとき、STS ポリシーをカスタマイズできます。 要求された一時的な許可はロールに付与された権限とSTSポリシーで指定された権限の交わりです。次のコードは指定されたSTSポリシーを使用して my-bucketの読み取り専用権限を申請し、一時的なトークンの有効期間を15分に設定するサンプルです。

  1. require 'aliyun/sts'
  2. require 'aliyun/oss'
  3. sts = Aliyun::STS::Client.new(
  4. access_key_id: '<AccessKeyId of the subaccount>',
  5. access_key_secret: '<AccessKeySecret of the subaccount>')
  6. policy = Aliyun::STS::Policy.new
  7. policy.allow(['oss:Get*'], ['acs:oss:*:*:my-bucket/*'])
  8. token = sts.assume_role('<role arc>', '<session name>', policy, 15 * 60)
  9. client = Aliyun::OSS::Client.new(
  10. endpoint: 'ENDPOINT',
  11. access_key_id: token.access_key_id,
  12. access_key_secret: token.access_key_secret,
  13. sts_token: token.security_token)
  14. bucket = client.get_bucket('my-bucket')

詳細な使い方とパラメータについてはAPI Documentationを参照してください。