使用 HMAC 認證
HMAC 認證包含配對的「存取金鑰」及「秘密金鑰」,可與需要鑑別的 S3-compatible 工具及程式庫搭配使用。
已定義 HMAC 認證
IBM Cloud® Object Storage API 是一個 REST 型 API,用來讀寫物件。 它使用 IBM Cloud® Identity and Access Management 進行鑑別及授權,並支援 S3 API 子集,以輕鬆地將應用程式移轉至 IBM Cloud。
在主控台中建立 HMAC 認證
在主控台中建立認證期間,使用者可以將 Include HMAC Credential
切換至 On
,以建立一組 HMAC 認證作為 服務認證 的一部分。 圖 1 顯示透過選擇「進階選項」來設定 HMAC 參數的選項。
{: caption=" HMAC 設定
建立「服務認證」之後,cos_hmac_keys
欄位中會包括「HMAC 金鑰」。 然後,這些 HMAC 金鑰會與服務 ID相關聯,並且可用於存取服務 ID 的角色所容許的任何資源或作業。
建立服務認證時,可以為角色提供 None
值。 這將防止建立非預期或不必要的 IAM 存取原則。 關聯服務 ID 的任何存取原則都需要使用 IAM 主控台或 API 來管理。
使用 CLI 建立 HMAC 認證
您也可以使用 IBM Cloud® Object Storage CLI 來建立認證。 您必須已安裝 IBM Cloud Platform 指令行指示,才能使用範例。
ibmcloud resource service-key-create <key-name-without-spaces> Writer --instance-name "<instance name--use quotes if your instance name has spaces>" --parameters '{"HMAC":true}'
HMAC 認證範例
如果您要儲存所產生索引鍵的結果,則可以將 > file.skey
附加至範例尾端。 基於此指令集的目的,您只需要尋找具有下列子索引鍵的 cos_hmac_keys
標題:access_key_id
及 secret_access_key
。
cos_hmac_keys:
access_key_id: 7exampledonotusea6440da12685eee02
secret_access_key: 8not8ed850cddbece407exampledonotuse43r2d2586
將 HMAC 認證設為環境變數
建立認證之後,您可以將它們設為環境變數 (所涉及作業系統特有的指示)。 例如,在範例 3 中,.bash_profile
Script 包含在啟動 Shell 時匯出並用於開發的 COS_HMAC_ACCESS_KEY_ID
和 COS_HMAC_SECRET_ACCESS_KEY
。
export COS_HMAC_ACCESS_KEY_ID="7exampledonotusea6440da12685eee02"
export COS_HMAC_SECRET_ACCESS_KEY="8not8ed850cddbece407exampledonotuse43r2d2586"
下一步
請注意,使用 HMAC 認證來建立簽章,以用於需要額外標頭的直接 REST API 呼叫時:
- 所有要求都必須具有日期格式為
x-amz-date
的%Y%m%dT%H%M%SZ
標頭。 - 任何具有有效負載(物件上傳、刪除多個物件等)的請求都必須提供
x-amz-content-sha256
標頭以及有效負載內容的SHA256雜湊值。 - 不支援 ACL(
public-read
除外)。
並非所有 S3 相容工具目前都受支援。 部分工具嘗試在建立儲存區時設定 public-read
以外的 ACL。 透過這些工具建立儲存桶將會失敗。 如果 PUT bucket
請求因不支援的 ACL 錯誤而失敗,請先使用 IBM Cloud Object Storage入門 中所示的控制台來建立儲存桶,然後設定該工具以讀取和寫入對像那個桶子。 目前不支援在寫入物件時設定 ACL 的工具。