雜湊式訊息驗證碼 (HMAC) 金鑰可讓服務帳戶驗證對 Cloud Storage XML API 的要求。舉例來說,如要在其他雲端儲存空間供應商和 Cloud Storage 之間移動資料,可以使用 HMAC 金鑰。本文說明如何建立、停用及刪除與專案中服務帳戶相關聯的 HMAC 金鑰。
如需 HMAC 金鑰的背景資訊,請參閱「HMAC 金鑰」。
事前準備
在 Cloud Storage 使用這項功能前,必須符合下列條件:
具備足夠權限,可在所選專案中使用 HMAC 金鑰:
如果您擁有該專案,代表您非常可能已具備必要的權限。
您應具備專案中前置字串為
storage.hmacKeys的 Identity and Access Management (IAM) 權限。如要瞭解如何取得具備這些權限的角色 (例如 Storage HMAC 金鑰管理員),請參閱「使用 IAM 權限」。
專案中已有要建立 HMAC 金鑰的服務帳戶。如果您還沒有服務帳戶,請參閱「建立服務帳戶」。
請確認下列組織政策限制已停用:
constraints/storage.restrictAuthTypes(HMAC 金鑰驗證必須停用)
如要瞭解如何檢查及停用限制,請參閱「建立及管理組織政策」。
建立 HMAC 金鑰
如何為服務帳戶建立 HMAC 金鑰:
控制台
不支援在 Cloud de Confiance 控制台中使用 HMAC 金鑰。
指令列
使用 hmac create 指令:
gcloud storage hmac create SERVICE_ACCOUNT_EMAIL
其中 SERVICE_ACCOUNT_EMAIL 是與服務帳戶相關聯的電子郵件地址。例如:example-service-account@my-pet-project.s3ns.iam.gserviceaccount.com。
如果成功,回應會包含 HMAC 金鑰資源,包括 accessId 和 secret 的值。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Terraform
您可以使用 Terraform 資源建立 HMAC 金鑰。這個範例也包含建立服務帳戶的資源。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL呼叫 JSON API,並傳送POSThmacKeys 要求:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/storage/v1/projects/PROJECT_IDENTIFIER/hmacKeys?serviceAccountEmail=SERVICE_ACCOUNT_EMAIL"
其中:
PROJECT_IDENTIFIER是與要建立的金鑰相關聯的專案 ID 或編號。例如:my-pet-project。SERVICE_ACCOUNT_EMAIL是與服務帳戶相關聯的電子郵件地址。例如:example-service-account@my-pet-project.s3ns.iam.gserviceaccount.com。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL透過POSTHMAC 金鑰要求呼叫 XML API:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/?Action=CreateAccessKey&UserName=SERVICE_ACCOUNT_EMAIL"
其中,
SERVICE_ACCOUNT_EMAIL是與您的服務帳戶相關聯的電子郵件地址。例如:example-service-account@my-pet-project.s3ns.iam.gserviceaccount.com。
取得 HMAC 金鑰資訊
如要列出專案的 HMAC 金鑰,並取得金鑰相關資訊:
控制台
不支援在 Cloud de Confiance 控制台中使用 HMAC 金鑰。
指令列
使用
hmac list指令列出專案中的 hmac 金鑰:gcloud storage hmac list
如果成功,指令會傳回 HMAC 金鑰存取 ID 清單,以及各金鑰的狀態和相關聯的服務帳戶。
使用
hmac describe指令擷取特定金鑰的中繼資料:gcloud storage hmac describe KEY_ACCESS_ID
其中
KEY_ACCESS_ID是金鑰的存取 ID。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會擷取與專案相關聯的 HMAC 金鑰清單:
下列範例會擷取關特定 HMAC 金鑰的相關資訊:
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會擷取與專案相關聯的 HMAC 金鑰清單:
下列範例會擷取關特定 HMAC 金鑰的相關資訊:
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會擷取與專案相關聯的 HMAC 金鑰清單:
下列範例會擷取關特定 HMAC 金鑰的相關資訊:
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會擷取與專案相關聯的 HMAC 金鑰清單:
下列範例會擷取關特定 HMAC 金鑰的相關資訊:
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會擷取與專案相關聯的 HMAC 金鑰清單:
下列範例會擷取關特定 HMAC 金鑰的相關資訊:
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會擷取與專案相關聯的 HMAC 金鑰清單:
下列範例會擷取關特定 HMAC 金鑰的相關資訊:
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會擷取與專案相關聯的 HMAC 金鑰清單:
下列範例會擷取關特定 HMAC 金鑰的相關資訊:
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會擷取與專案相關聯的 HMAC 金鑰清單:
下列範例會擷取關特定 HMAC 金鑰的相關資訊:
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL呼叫 JSON API,並傳送LISThmacKeys 要求:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.s3nsapis.fr/storage/v1/projects/PROJECT_IDENTIFIER/hmacKeys"
其中
PROJECT_IDENTIFIER是專案 ID 或編號,與您要列出的金鑰相關聯。例如:my-pet-project。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL透過GETHMAC 金鑰要求呼叫 XML API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/?Action=ListAccessKeys&UserName=SERVICE_ACCOUNT_EMAIL"
其中,
SERVICE_ACCOUNT_EMAIL是與您的服務帳戶相關聯的電子郵件地址。例如:example-service-account@my-pet-project.s3ns.iam.gserviceaccount.com。
更新 HMAC 金鑰的狀態
如何將 HMAC 金鑰切換為有效和停用狀態:
控制台
不支援在 Cloud de Confiance 控制台中使用 HMAC 金鑰。
指令列
使用 hmac update 指令:
gcloud storage hmac update ACCESS_KEY_ID STATE
其中:
ACCESS_KEY_ID是與您要更新的金鑰相關聯的存取 ID。STATE為--activate或--deactivate。
如果成功,指令會傳回 HMAC 金鑰的更新中繼資料。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會停用 HMAC 金鑰:
以下範例會啟用 HMAC 金鑰:
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會停用 HMAC 金鑰:
以下範例會啟用 HMAC 金鑰:
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會停用 HMAC 金鑰:
以下範例會啟用 HMAC 金鑰:
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會停用 HMAC 金鑰:
以下範例會啟用 HMAC 金鑰:
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會停用 HMAC 金鑰:
以下範例會啟用 HMAC 金鑰:
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會停用 HMAC 金鑰:
以下範例會啟用 HMAC 金鑰:
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會停用 HMAC 金鑰:
以下範例會啟用 HMAC 金鑰:
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會停用 HMAC 金鑰:
以下範例會啟用 HMAC 金鑰:
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。建立含有以下資訊的 JSON 檔案:
{"state": "STATE"}其中
STATE是按鍵的目標狀態。例如:INACTIVE。使用
cURL呼叫 JSON API,並傳送PUThmacKeys 要求:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.s3nsapis.fr/storage/v1/projects/PROJECT_IDENTIFIER/hmacKeys/ACCESS_KEY_ID"
其中:
JSON_FILE_NAME是您在步驟 2 建立的檔案路徑。PROJECT_IDENTIFIER是與要更新的金鑰相關聯的專案 ID 或編號。例如:my-pet-project。ACCESS_KEY_ID是與您要更新的金鑰相關聯的存取 ID。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL透過POSTHMAC 金鑰要求呼叫 XML API:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/?Action=UpdateAccessKey&AccessKeyId=ACCESS_KEY_ID&Status=STATUS"其中:
ACCESS_KEY_ID是與您要更新的金鑰相關聯的存取 ID。STATUS是金鑰的目標狀態。例如:Inactive。
變更 HMAC 金鑰狀態後,最多需要 3 分鐘,狀態變更才會在 Cloud Storage 系統中生效。因此,將 HMAC 金鑰設為停用後,請至少等待 3 分鐘再刪除金鑰。
刪除 HMAC 金鑰
HMAC 金鑰必須處於停用狀態才能刪除。如何刪除停用的 HMAC 金鑰:
控制台
不支援在 Cloud de Confiance 控制台中使用 HMAC 金鑰。
指令列
使用 hmac delete 指令:
gcloud storage hmac delete ACCESS_KEY_ID
其中 ACCESS_KEY_ID 是與要刪除的金鑰相關聯的存取 ID。
如果成功,指令不會傳回回應。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL呼叫 JSON API,並傳送DELETEhmacKeys 要求:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/storage/v1/projects/PROJECT_IDENTIFIER/hmacKeys/ACCESS_KEY_ID"
其中:
PROJECT_IDENTIFIER是與要刪除的金鑰相關聯的專案 ID 或編號。例如:my-pet-project。ACCESS_KEY_ID是與要刪除的金鑰相關聯的存取 ID。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL透過POSTHMAC 金鑰要求呼叫 XML API:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/?Action=DeleteAccessKey&AccessKeyId=ACCESS_KEY_ID"其中
ACCESS_KEY_ID是與要刪除的金鑰相關聯的存取 ID。