阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

使用STS訪問

更新時間: Oct 30, 2018

OSS可以通過阿里雲STS服務,臨時進行授權訪問。更多有關STS的內容請參考:阿里雲STS

使用STS時請按以下步驟進行:

  1. 在官網控制台建立子帳號,參考OSS STS
  2. 在官網控制台建立STS角色並賦予子帳號扮演角色的許可權,參考OSS STS
  3. 使用子帳號的AccessKeyId/AccessKeySecret向STS申請臨時token。
  4. 使用臨時token中的認證資訊建立OSS的Client。
  5. 使用OSS的Client訪問OSS服務。

在使用STS訪問OSS時,需要設定:sts_token參數,如下面的例子所示:

  1. require 'aliyun/sts'
  2. require 'aliyun/oss'
  3. sts = Aliyun::STS::Client.new(
  4. access_key_id: '<子帳號的AccessKeyId>',
  5. access_key_secret: '<子帳號的AccessKeySecret>')
  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申請臨時token時,還可以指定自訂的STS Policy。這樣申請的臨時權限是所扮演角色的許可權與Policy指定的許可權的交集。下面的例子將通過指定STS Policy申請對my-bucket的只讀許可權,並指定臨時token的過期時間為15分鐘:

  1. require 'aliyun/sts'
  2. require 'aliyun/oss'
  3. sts = Aliyun::STS::Client.new(
  4. access_key_id: '<子帳號的AccessKeyId>',
  5. access_key_secret: '<子帳號的AccessKeySecret>')
  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文檔