服務認證
服務憑證 提供將應用程式連線至 Object Storage 的必要資訊,以 JSON 文件包裝。
服務認證一律會與「服務 ID」相關聯,而且可以建立新的「服務 ID」與新的認證。
若要檢視認證,您必須獲授與管理者平台角色或具有 resource-controller.credential.retrieve_all 動作的自訂角色。 如需 此更新項目 的相關資訊,請參閱 文件。
使用下列步驟,來建立服務認證:
- 登入 IBM Cloud 主控台,並導覽至 Object Storage 的實例。
- 在側邊導覽中,按一下服務認證。
- 按一下新建認證,並提供必要資訊。 如果您想要產生 HMAC 認證,請將
Include HMAC Credential切換至On。 請驗證選項已切換至On,然後再繼續。 - 按一下新增,以產生服務認證。
建立服務認證時,可以為角色提供 None 值。 這將防止建立非預期或不必要的 IAM 存取原則。 關聯服務 ID 的任何存取原則都需要使用 IAM 主控台或 API 來管理。
認證包含下列值:
| 欄位名稱 | 值 |
|---|---|
apikey |
為「服務 ID」建立新的 API 金鑰 |
cos_hmac_keys |
「存取金鑰」及「密碼金鑰」配對,以與 S3 相容工具及程式庫搭配使用 |
endpoints |
鏈結至可用端點的 JSON 表示法 |
iam_apikey_description |
API 金鑰說明 - 一開始會產生,但可編輯 |
iam_apikey_name |
API 金鑰名稱 - 一開始會產生,但可編輯 |
iam_role_crn |
所指派角色的唯一 ID |
iam_serviceid_crn |
「服務 ID」的唯一 ID |
resource_instance_id |
認證所存取的 Object Storage 實例的唯一 ID。 這也稱為服務認證。 |
這是服務認證的範例:
{
"apikey": "0viPHOY7LbLNa9eLftrtHPpTjoGv6hbLD1QalRXikliJ",
"cos_hmac_keys": {
"access_key_id": "347aa3a4b34344f8bc7c7cccdf856e4c",
"secret_access_key": "gvurfb82712ad14W7a7915h763a6i87155d30a1234364f61"
},
"endpoints": "https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints",
"iam_apikey_description": "Auto generated apikey during resource-key operation for Instance - crn:v1:bluemix:public:cloud-object-storage:global:a/3ag0e9402tyfd5d29761c3e97696b71n:d6f74k03-6k4f-4a82-b165-697354o63903::",
"iam_apikey_name": "auto-generated-apikey-f9274b63-ef0b-4b4e-a00b-b3bf9023f9dd",
"iam_role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Manager",
"iam_serviceid_crn": "crn:v1:bluemix:public:iam-identity::a/3ag0e9402tyfd5d29761c3e97696b71n::serviceid:ServiceId-540a4a41-7322-4fdd-a9e7-e0cb7ab760f9",
"resource_instance_id": "crn:v1:bluemix:public:cloud-object-storage:global:a/3ag0e9402tyfd5d29761c3e97696b71n:d6f74k03-6k4f-4a82-b165-697354o63903::"
}
您也可以使用 IBM Cloud CLI 來建立新的服務認證 (這是稱為 服務金鑰的子集)。 此範例會擷取認證,並將它寫入 IBM COS SDK 可以自動取得 API 金鑰及「服務實例 ID」的檔案。 首先,建立服務金鑰 (在此範例中稱為 config-example,並與稱為 cos-dev-enablement 的 COS 實例相關聯):
ic resource service-key-create config-example --instance-name cos-dev-enablement
然後,解壓縮認證並建立 cos_credential 檔:
ic resource service-key config-example --output JSON | jq '.[].credentials' > ~/.bluemix/cos_credentials
瞭解 endpoints 物件
作為服務憑證一部分提供的 endpoints URL (https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints) 提供了連接用戶端時可使用的所有可能端點清單:
{
"identity-endpoints":{
"iam-token":"iam.cloud.ibm.com",
"iam-policy":"iampap.cloud.ibm.com"
},
"service-endpoints":{
"cross-region":{
"us":{
"public":{
"us-geo":"s3.us.cloud-object-storage.appdomain.cloud",
"Dallas":"s3.dal.us.cloud-object-storage.appdomain.cloud",
"Washington":"s3.wdc.us.cloud-object-storage.appdomain.cloud",
"San Jose":"s3.sjc.us.cloud-object-storage.appdomain.cloud"
},
"private":{
"us-geo":"s3.private.us.cloud-object-storage.appdomain.cloud",
"Dallas":"s3.private.dal.us.cloud-object-storage.appdomain.cloud",
"Washington":"s3.private.wdc.us.cloud-object-storage.appdomain.cloud",
"San Jose":"s3.private.sjc.us.cloud-object-storage.appdomain.cloud"
},
"direct":{
"us-geo":"s3.direct.us.cloud-object-storage.appdomain.cloud",
"Dallas":"s3.direct.dal.us.cloud-object-storage.appdomain.cloud",
"Washington":"s3.direct.wdc.us.cloud-object-storage.appdomain.cloud",
"San Jose":"s3.direct.sjc.us.cloud-object-storage.appdomain.cloud"
}
},
"eu":{
"public":{
"eu-geo":"s3.eu.cloud-object-storage.appdomain.cloud",
"Amsterdam":"s3.ams.eu.cloud-object-storage.appdomain.cloud",
"Frankfurt":"s3.fra.eu.cloud-object-storage.appdomain.cloud",
/** "Milan":"s3.mil.eu.cloud-object-storage.appdomain.cloud"*/
},
"private":{
"eu-geo":"s3.private.eu.cloud-object-storage.appdomain.cloud",
"Amsterdam":"s3.private.ams.eu.cloud-object-storage.appdomain.cloud",
"Frankfurt":"s3.private.fra.eu.cloud-object-storage.appdomain.cloud",
/** "Milan":"s3.private.mil.eu.cloud-object-storage.appdomain.cloud"*/
},
"direct":{
"eu-geo":"s3.direct.eu.cloud-object-storage.appdomain.cloud",
"Amsterdam":"s3.direct.ams.eu.cloud-object-storage.appdomain.cloud",
"Frankfurt":"s3.direct.fra.eu.cloud-object-storage.appdomain.cloud",
/** "Milan":"s3.direct.mil.eu.cloud-object-storage.appdomain.cloud"*/
}
},
"ap":{
"public":{
"ap-geo":"s3.ap.cloud-object-storage.appdomain.cloud",
"Tokyo":"s3.tok.ap.cloud-object-storage.appdomain.cloud",
"Seoul":"s3.seo.ap.cloud-object-storage.appdomain.cloud",
"Hong Kong":"s3.hkg.ap.cloud-object-storage.appdomain.cloud",
"Sydney":"s3.syd.ap.cloud-object-storage.appdomain.cloud",
"Osaka":"s3.osa.ap.cloud-object-storage.appdomain.cloud"
},
"private":{
"ap-geo":"s3.private.ap.cloud-object-storage.appdomain.cloud",
"Tokyo":"s3.private.tok.ap.cloud-object-storage.appdomain.cloud",
"Seoul":"s3.private.seo.ap.cloud-object-storage.appdomain.cloud",
"Hong Kong":"s3.private.hkg.ap.cloud-object-storage.appdomain.cloud",
"Sydney":"s3.private.syd.ap.cloud-object-storage.appdomain.cloud",
"Osaka":"s3.private.osa.ap.cloud-object-storage.appdomain.cloud"
},
"direct":{
"ap-geo":"s3.direct.ap.cloud-object-storage.appdomain.cloud",
"Tokyo":"s3.direct.tok.ap.cloud-object-storage.appdomain.cloud",
"Seoul":"s3.direct.seo.ap.cloud-object-storage.appdomain.cloud",
"Hong Kong":"s3.direct.hkg.ap.cloud-object-storage.appdomain.cloud",
"Sydney":"s3.direct.syd.ap.cloud-object-storage.appdomain.cloud",
"Osaka":"s3.direct.osa.ap.cloud-object-storage.appdomain.cloud"
}
}
},
"regional":{
"us-south":{
"public":{
"us-south":"s3.us-south.cloud-object-storage.appdomain.cloud"
},
"private":{
"us-south":"s3.private.us-south.cloud-object-storage.appdomain.cloud"
},
"direct":{
"us-south":"s3.direct.us-south.cloud-object-storage.appdomain.cloud"
}
},
"us-east":{
"public":{
"us-east":"s3.us-east.cloud-object-storage.appdomain.cloud"
},
"private":{
"us-east":"s3.private.us-east.cloud-object-storage.appdomain.cloud"
},
"direct":{
"us-east":"s3.direct.us-east.cloud-object-storage.appdomain.cloud"
}
},
"eu-gb":{
"public":{
"eu-gb":"s3.eu-gb.cloud-object-storage.appdomain.cloud"
},
"private":{
"eu-gb":"s3.private.eu-gb.cloud-object-storage.appdomain.cloud"
},
"direct":{
"eu-gb":"s3.direct.eu-gb.cloud-object-storage.appdomain.cloud"
}
},
"eu-de":{
"public":{
"eu-de":"s3.eu-de.cloud-object-storage.appdomain.cloud"
},
"private":{
"eu-de":"s3.private.eu-de.cloud-object-storage.appdomain.cloud"
},
"direct":{
"eu-de":"s3.direct.eu-de.cloud-object-storage.appdomain.cloud"
}
},
"jp-tok":{
"public":{
"jp-tok":"s3.jp-tok.cloud-object-storage.appdomain.cloud"
},
"private":{
"jp-tok":"s3.private.jp-tok.cloud-object-storage.appdomain.cloud"
},
"direct":{
"jp-tok":"s3.direct.jp-tok.cloud-object-storage.appdomain.cloud"
}
},
"jp-osa":{
"public":{
"jp-osa":"s3.jp-osa.cloud-object-storage.appdomain.cloud"
},
"private":{
"jp-osa":"s3.private.jp-osa.cloud-object-storage.appdomain.cloud"
},
"direct":{
"jp-osa":"s3.direct.jp-osa.cloud-object-storage.appdomain.cloud"
}
},
"au-syd":{
"public":{
"au-syd":"s3.au-syd.cloud-object-storage.appdomain.cloud"
},
"private":{
"au-syd":"s3.private.au-syd.cloud-object-storage.appdomain.cloud"
},
"direct":{
"au-syd":"s3.direct.au-syd.cloud-object-storage.appdomain.cloud"
}
},
"ca-tor":{
"public":{
"ca-tor":"s3.ca-tor.cloud-object-storage.appdomain.cloud"
},
"private":{
"ca-tor":"s3.private.ca-tor.cloud-object-storage.appdomain.cloud"
},
"direct":{
"ca-tor":"s3.direct.ca-tor.cloud-object-storage.appdomain.cloud"
}
},
"br-sao":{
"public":{
"br-sao":"s3.br-sao.cloud-object-storage.appdomain.cloud"
},
"private":{
"br-sao":"s3.private.br-sao.cloud-object-storage.appdomain.cloud"
},
"direct":{
"br-sao":"s3.direct.br-sao.cloud-object-storage.appdomain.cloud"
}
}
},
"single-site":{
"ams03":{
"public":{
"ams03":"s3.ams03.cloud-object-storage.appdomain.cloud"
},
"private":{
"ams03":"s3.private.ams03.cloud-object-storage.appdomain.cloud"
},
"direct":{
"ams03":"s3.direct.ams03.cloud-object-storage.appdomain.cloud"
}
},
"che01":{
"public":{
"che01":"s3.che01.cloud-object-storage.appdomain.cloud"
},
"private":{
"che01":"s3.private.che01.cloud-object-storage.appdomain.cloud"
},
"direct":{
"che01":"s3.direct.che01.cloud-object-storage.appdomain.cloud"
}
},
"mon01":{
"public":{
"mon01":"s3.mon01.cloud-object-storage.appdomain.cloud"
},
"private":{
"mon01":"s3.private.mon01.cloud-object-storage.appdomain.cloud"
},
"direct":{
"mon01":"s3.direct.mon01.cloud-object-storage.appdomain.cloud"
}
},
"mex01":{
"public":{
"mex01":"s3.mex01.cloud-object-storage.appdomain.cloud"
},
"private":{
"mex01":"s3.private.mex01.cloud-object-storage.appdomain.cloud"
},
"direct":{
"mex01":"s3.direct.mex01.cloud-object-storage.appdomain.cloud"
}
},
"sjc04":{
"public":{
"sjc04":"s3.sjc04.cloud-object-storage.appdomain.cloud"
},
"private":{
"sjc04":"s3.private.sjc04.cloud-object-storage.appdomain.cloud"
},
"direct":{
"sjc04":"s3.direct.sjc04.cloud-object-storage.appdomain.cloud"
}
},
"mil01":{
"public":{
"mil01":"s3.mil01.cloud-object-storage.appdomain.cloud"
},
"private":{
"mil01":"s3.private.mil01.cloud-object-storage.appdomain.cloud"
},
"direct":{
"mil01":"s3.direct.mil01.cloud-object-storage.appdomain.cloud"
}
},
"par01":{
"public":{
"par01":"s3.par01.cloud-object-storage.appdomain.cloud"
},
"private":{
"par01":"s3.private.par01.cloud-object-storage.appdomain.cloud"
},
"direct":{
"par01":"s3.direct.par01.cloud-object-storage.appdomain.cloud"
}
},
"sng01":{
"public":{
"sng01":"s3.sng01.cloud-object-storage.appdomain.cloud"
},
"private":{
"sng01":"s3.private.sng01.cloud-object-storage.appdomain.cloud"
},
"direct":{
"sng01":"s3.direct.sng01.cloud-object-storage.appdomain.cloud"
}
}
}
},
"resource-configuration-endpoints":{
"global":{
"public":"config.cloud-object-storage.cloud.ibm.com/v1",
"private":"config.private.cloud-object-storage.cloud.ibm.com/v1",
"direct":"config.direct.cloud-object-storage.cloud.ibm.com/v1"
}
}
}
使用需要 "auth" 端點值的程式庫建立用戶端時,您需要將 /oidc/token 新增至上方提供的 iam-token URL 尾端。
使用服務認證進行單一儲存區存取
建立服務認證時,基礎「服務 ID」會獲授與整個 Object Storage 實例上的角色。 如果要使用認證來授與對儲存區子集的存取權,而不是整個實例的存取權,則需要編輯此原則。 如需詳細資料,請參閱儲存區許可權頁面。
使用服務憑證存取單一物件/資料夾
建立服務認證時,基礎「服務 ID」會獲授與整個 Object Storage 實例上的角色。 如果打算使用憑證授予對某個儲存桶而非整個實體的存取權,則需要編輯此原則。 如需詳細資料,請參閱 使用 IAM 存取條件指派儲存區內物件的存取權 頁面。
使用 API 金鑰存取多個實例
如果打算對多個Object Storage實例使用相同的 API 金鑰,您可以修改服務 ID 的存取策略以授予存取權限。 與服務 ID 相關聯的每個 API 金鑰都會繼承指定給服務 ID 的政策。
使用從現有實例產生的服務 ID
當您為特定實例建立服務憑證時,該憑證具有 API 金鑰值。 若要將相同 API 金鑰與另一個Object Storage實例一起使用,請修改與該 API 金鑰關聯的服務 ID 的存取策略,以授予其對其他實例的存取權限。
直接產生Service ID
如果您希望在建立 API 金鑰後限制其可見性,請按照 為服務 ID 建立 API 金鑰 中的步驟操作。 如該主題中所述,請確保在建立時複製或下載金鑰。 然後,配置服務 ID 的存取策略,使其有權存取一個或多個Object Storage實例。
API 金鑰與 HMAC
一般而言,「IAM API 金鑰」是 IBM Cloud® Object Storage 偏好的鑑別方法。 支援 HMAC 主要是為了與從 IaaS Object Storage 移轉過來的應用程式和傳統 S3 應用程式的早期版本相容。 使用 COS SDK 開發應用程式時,原本也支援 IAM。 會自動處理記號有效期限及重新整理,以簡化處理程序。
如需 IAM 的相關資訊,請造訪開始使用 IAM
如需 HMAC 的相關資訊,請造訪使用 HMAC 認證