

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立 Salesforce 用戶端秘密
<a name="tutorials_salesforce-client-secret"></a>

在本教學課程中，您會建立 Salesforce 用戶端秘密，並將其存放在 AWS Secrets Manager 中做為[受管外部秘密](managed-external-secrets.md)、開啟受管輪換，然後透過將輪換的登入資料交換為存取字符來測試輪換的登入資料。本教學課程約需 20-30 分鐘完成。

本教學課程使用可能會向您的 收取費用 AWS 的服務 AWS 帳戶，包括您存放在 Secrets Manager 中的秘密費用，以及如果您選擇使用密碼，則為客戶受管金鑰。如需詳細資訊，請參閱[定價](intro.md#asm_pricing)。

**注意**  
本教學課程使用 [SalesforceClientSecret](mes-partner-salesforce.md) 秘密類型做為範例。其他受管外部秘密類型遵循類似的流程。您可以使用整合合作夥伴定義的格式建立秘密，開啟受管輪換，然後使用輪換的登入資料。如需加入的合作夥伴清單及其所需的秘密格式，請參閱 [整合合作夥伴](mes-partners.md)。

開始本教學課程之前，請確定您有下列項目。
+ Salesforce 帳戶 （開發人員或其他），可讓您建立外部用戶端應用程式 (ECAs)。
+ 您的 的管理許可 AWS 帳戶。在生產設定中，最佳實務是針對不同的任務使用不同的角色。例如，管理組織中秘密的角色會建立秘密，而個別角色則會在執行時間使用秘密。對於教學步驟，我們建議您繼續使用相同的身分。如需如何在生產環境中設定許可的詳細資訊，請參閱 [的身分驗證和存取控制 AWS Secrets Manager](auth-and-access.md)。

**Topics**
+ [步驟 1：建立外部用戶端應用程式並啟用 OAuth](#tutorials_salesforce-client-secret_step1)
+ [步驟 2：建立受管外部秘密並啟用輪換](#tutorials_salesforce-client-secret_step2)
+ [步驟 3：測試輪換的登入資料](#tutorials_salesforce-client-secret_step3)
+ [步驟 4：清除資源](#tutorials_salesforce-client-secret_step4)
+ [後續步驟](#tutorials_salesforce-client-secret_nextsteps)

## 步驟 1：建立外部用戶端應用程式並啟用 OAuth
<a name="tutorials_salesforce-client-secret_step1"></a>

第一步是在 Salesforce 中建立外部用戶端應用程式 (ECA)，並為 OAuth 設定它，以便 Secrets Manager 可以輪換用戶端秘密。如需完整的 Salesforce 程序，請參閱 Salesforce 文件中的[使用外部用戶端應用程式設定授權](https://developer.salesforce.com/docs/platform/accsdk/guide/acc-sdk-setup-auth-external.html)。

當您設定 ECA 時，請務必設定下列項目：
+ 在組織層級，啟用**允許透過 REST API 存取外部用戶端應用程式取用者秘密**。此設定可讓 Secrets Manager 透過 Salesforce REST API 擷取和輪換取用者秘密。
+ 在 ECA 上，啟用 OAuth 範圍 **透過 APIs(api)**。
+ 在 ECA 上，啟用**啟用用戶端登入資料流程**。
+ 在 ECA 上，啟用**啟用權杖交換流程**，並**要求權杖交換流程的秘密**。

建立 ECA 之後，請在下一個步驟中收集您需要存放在秘密中的值：
+ ECA Manager OAuth 設定中的**取用者金鑰** （用戶端 ID) 和**取用者秘密** （用戶端秘密）。
+ 您的 Salesforce My Domain 基礎 URL，例如 `https://{{MyDomainName}}.my.salesforce.com`。
+ ECA **的應用程式 ID** 和**取用者 ID**。這些對應至 Salesforce 文件中的 `external_client_app_identifier`和 `consumer_id` 欄位。若要了解如何擷取這些值，請參閱 Salesforce 文件中的[階段 OAuth 登入](https://help.salesforce.com/s/articleView?id=xcloud.eca_stage_oauth_credentials.htm&type=5)資料。

如需秘密中每個必要欄位的說明，請參閱 [Salesforce 用戶端秘密](mes-partner-salesforce.md)。

## 步驟 2：建立受管外部秘密並啟用輪換
<a name="tutorials_salesforce-client-secret_step2"></a>

接著，您將 Salesforce 用戶端秘密存放在 Secrets Manager 中，做為受管外部秘密，並開啟受管輪換。透過受管輪換，您不會建立或維護 Lambda 輪換函數。Secrets Manager 會為您輪換秘密。

**建立秘密並開啟輪換 （主控台）**

1. 前往以下位置開啟機密管理員控制台：[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)。

1. 選擇 **Store a new secret** (存放新機密)。

1. 在 **Choose secret type** (選擇秘密類型) 頁面上，執行下列動作：

   1. 針對**機密類型**，選擇 Salesforce 用戶端機密受管外部機密類型 (**SalesforceClientSecret**)。

   1. 輸入 Salesforce 用戶端秘密的秘密值欄位：取用者金鑰、取用者秘密、基本 URI、應用程式 ID 和取用者 ID。如需每個欄位的說明，請參閱 [Salesforce 用戶端秘密](mes-partner-salesforce.md)。

   1. 如需 **Encryption key** (加密金鑰)，請選擇 **aws/secretsmanager** 使用用於機密管理員的 AWS 受管金鑰 。使用此金鑰無需任何成本。您也可以使用自己的客戶受管金鑰。如需有關使用客戶受管金鑰的成本的資訊，請參閱 [定價](intro.md#asm_pricing)。

   1. 選擇**下一步**。

1. 在**設定秘密**頁面上，輸入描述性的**秘密名稱**和**描述**，然後選擇**下一步**。

1. 在**設定輪換**頁面上，執行下列動作。對於受管外部秘密，在秘密建立期間預設會啟用輪換。

   1. 確認已開啟**自動輪換**。

   1. 在**輪換中繼資料**下，針對 **API 版本** (`apiVersion`)，輸入 Salesforce 組織的 API 版本。此欄位為必填。其格式必須為 `v{{XX.X}}`，其中 {{X}} 為數字字元，且必須至少為 `v65.0`。如果您希望 Secrets Manager 使用另一組管理登入資料輪換秘密，也請提供管理員秘密 ARN。如需每個中繼資料欄位的說明，請參閱 [Salesforce 用戶端秘密](mes-partner-salesforce.md)。

   1. 在**秘密輪換的服務許可**中，選擇**建立新角色**，以自動建立具有 Secrets Manager 輪換秘密所需許可的 IAM 角色。根據預設，許可範圍限定為建立秘密的 AWS 區域中的整合合作夥伴。如需詳細資訊，請參閱[安全與許可](mes-security.md)。

   1. 在**輪換排程**下，以 UTC 時區輸入您的排程，例如每 30 天自動輪換一次。

   1. 選擇**下一步**。

1. 在 **Review** (檢閱) 頁面上，檢閱機密詳細資訊，然後選擇 **Store** (存放)。

如需設定受管外部秘密輪換的更多方式，包括 AWS AWS CLI，請參閱 [輪換 Secrets Manager 受管外部秘密](rotate-secrets_external.md)。

## 步驟 3：測試輪換的登入資料
<a name="tutorials_salesforce-client-secret_step3"></a>

最後一個步驟是透過擷取秘密值並交換 Salesforce 存取字符的登入資料，來確認輪換的登入資料是否正常運作。

**擷取秘密值 （主控台）**

1. 前往以下位置開啟機密管理員控制台：[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)。

1. 在 **Secrets** (機密) 頁面中，選擇機密。

1. 在 **Secret details** (機密詳細資訊) 頁面，向下捲動並選擇 **Retrieve secret value** (擷取機密值)。請記下目前的 `consumerKey`和 `consumerSecret`值。

**注意**  
確認 `consumerKey`和 `consumerSecret`值已從您最初存放的值實際變更。如果它們尚未變更，請等待幾分鐘，然後再次檢查。如果它們仍未變更，請檢查 AWS CloudTrail 是否有任何秘密`RotationFailed`事件，其中包括輪換失敗原因的詳細資訊。如需詳細資訊，請參閱[我的受管外部秘密未輪換](troubleshoot.md#troubleshoot-mes-not-rotating)。

接著，使用擷取的登入資料向 Salesforce 請求存取字符。將 {{MyDomainName}} 取代為您的 Salesforce My Domain 名稱，並將 {{consumerKey}} 和 {{consumerSecret}} 取代為您擷取的值。

```
curl -X POST "https://{{MyDomainName}}.my.salesforce.com/services/oauth2/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "client_id={{consumerKey}}" \
  -d "client_secret={{consumerSecret}}"
```

如果登入資料有效，Salesforce 會傳回包含 的 JSON 回應`access_token`。接收存取字符可確認輪換的登入資料是否正常運作。

在命令 shell 中輸入命令時，存在命令歷史記錄被存取或公用程式存取命令參數的風險。請參閱 [降低使用 AWS CLI 存放 AWS Secrets Manager 秘密的風險](security_cli-exposure-risks.md)。

## 步驟 4：清除資源
<a name="tutorials_salesforce-client-secret_step4"></a>

為了避免持續產生費用，請刪除您不再需要在本教學課程中建立的資源：Secrets Manager 建立的秘密和 IAM 輪換角色。刪除秘密也會停止自動輪換。

**刪除秘密 （主控台）**

1. 前往以下位置開啟機密管理員控制台：[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)。

1. 在 **Secrets** (機密) 頁面中，選擇機密。

1. 在 **Secrets details** (秘密詳細資訊) 區段，選擇 **Actions** (動作)，然後選擇 **Delete description** (刪除描述)。

1. 在**停用秘密和排程刪除**對話方塊中，輸入等待期間，然後選擇**排程刪除**。Secrets Manager 會讓秘密立即無法存取，並排定在復原時段之後刪除。如需詳細資訊，請參閱[刪除 AWS Secrets Manager 秘密](manage_delete-secret.md)。

**刪除輪換角色 （主控台）**

1. 在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台，然後選擇**角色**。

1. 尋找 Secrets Manager 為輪換建立的角色，選取該角色，然後選擇**刪除**。如需詳細資訊，請參閱 *IAM 使用者指南*中的[刪除角色或執行個體描述檔](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html)。

## 後續步驟
<a name="tutorials_salesforce-client-secret_nextsteps"></a>
+ 若要進一步了解受管外部秘密以及 Secrets Manager 與 整合的合作夥伴，請參閱 [使用 AWS Secrets Manager 受管外部秘密來管理第三方秘密](managed-external-secrets.md)。
+ 若要檢閱 Salesforce 所需的秘密值和輪換中繼資料欄位，請參閱 [Salesforce 用戶端秘密](mes-partner-salesforce.md)。
+ 如需設定受管外部秘密輪換的更多方式，請參閱 [輪換受管外部秘密](rotate-secrets_external.md)。
+ 您可以透過快取機密來提高效能並降低成本。如需詳細資訊，請參閱[從 取得秘密 AWS Secrets Manager](retrieving-secrets.md)。
+ 若要了解使用 Secrets Manager 的成本，請參閱 [定價](intro.md#asm_pricing)。