

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Salesforce クライアントシークレットを作成する
<a name="tutorials_salesforce-client-secret"></a>

このチュートリアルでは、Salesforce クライアントシークレットを作成して に[マネージド外部シーク](managed-external-secrets.md)レット AWS Secrets Manager として保存し、マネージドローテーションを有効にしてから、ローテーションされた認証情報をアクセストークンと交換してテストします。このチュートリアルの所要時間は約 20～30 分です。

このチュートリアルでは AWS アカウント、Secrets Manager に保存するシークレットの料金や、使用を選択した場合はカスタマーマネージドキーなど、 に料金が発生する可能性のある AWS サービスを使用します。詳細については、「[料金](intro.md#asm_pricing)」を参照してください。

**注記**  
このチュートリアルでは、例として [SalesforceClientSecret](mes-partner-salesforce.md) シークレットタイプを使用します。他のマネージド外部シークレットタイプも同様のフローに従います。シークレットは、統合パートナーが定義する形式を使用して作成し、マネージドローテーションを有効にしてから、ローテーションされた認証情報を使用します。オンボーディングされたパートナーとその必要なシークレット形式のリストについては、「」を参照してください[統合パートナー](mes-partners.md)。

このチュートリアルを開始する前に、以下の要件を満たしていることを確認してください。
+ 外部クライアントアプリケーション (ECAs) を作成できる Salesforce アカウント (開発者またはその他）。
+ への管理アクセス許可 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) を作成し、Secrets Manager がクライアントシークレットをローテーションできるように OAuth 用に設定することです。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/) から Secrets Manager コンソールを開きます。

1. **[Store a new secret]** (新しいシークレットを保存する) を選択します｡

1. [**Choose secret type**] (シークレットタイプを選択する) ページで、次の操作を行います。

   1. **シークレットタイプ**で、Salesforce クライアントシークレットマネージド外部シークレットタイプ (**SalesforceClientSecret**) を選択します。

   1. Salesforce クライアントシークレットのシークレット値フィールドとして、コンシューマーキー、コンシューマーシークレット、基本 URI、アプリケーション ID、コンシューマー ID を入力します。各フィールドの説明については、「」を参照してください[Salesforce クライアントシークレット](mes-partner-salesforce.md)。

   1. **[Secrets Manager] (暗号化キー)** で **aws/secretsmanager** を選択すると、Secrets Manager に 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 CLI AWS 「」を参照してください[Secrets Manager が管理する外部シークレットのローテーション](rotate-secrets_external.md)。

## ステップ 3: ローテーションされた認証情報をテストする
<a name="tutorials_salesforce-client-secret_step3"></a>

最後のステップは、シークレット値を取得し、Salesforce アクセストークンの認証情報を交換することで、ローテーションされた認証情報が機能することを確認することです。

**シークレット値を取得するには (コンソール)**

1. Secrets Manager コンソール ([https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)) を開きます。

1. **[Secrets]** (シークレット) ページで、自分のシークレットを選択します。

1. **[Secret details]** (シークレットの詳細) ページで、下へスクロールし、**[Retrieve secret value]** (シークレットの値を取得する) を選択します。現在の `consumerKey`と `consumerSecret`の値を書き留めます。

**注記**  
`consumerKey` と の`consumerSecret`値が、最初に保存した値から実際に変更されたことを確認します。変更されていない場合は、数分待ってからもう一度確認してください。まだ変更されていない場合は、ローテーションが失敗した理由の詳細を含むシークレットの`RotationFailed`イベント AWS CloudTrail を確認します。詳細については、「[マネージド外部シークレットがローテーションしていない](troubleshoot.md#troubleshoot-mes-not-rotating)」を参照してください。

次に、取得した認証情報を使用して Salesforce からアクセストークンをリクエストします。{{MyDomainName}} を Salesforce My ドメイン名に置き換え、{{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`。アクセストークンを受け取ると、ローテーションされた認証情報が機能することを確認します。

コマンドシェルにコマンドを入力すると、コマンド履歴がアクセスされたり、ユーティリティからコマンドパラメータにアクセスされたりするリスクがあります。「[を使用して AWS Secrets Manager シークレット AWS CLI を保存するリスクを軽減する](security_cli-exposure-risks.md)」を参照してください。

## ステップ 4: リソースをクリーンアップする
<a name="tutorials_salesforce-client-secret_step4"></a>

継続的な料金が発生しないようにするには、不要になったときにこのチュートリアルで作成したリソース、つまり Secrets Manager が作成したシークレットと IAM ローテーションロールを削除します。シークレットを削除すると、自動ローテーションも停止します。

**シークレットを削除するには (コンソール)**

1. Secrets Manager コンソール ([https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)) を開きます。

1. **[Secrets]** (シークレット) ページで、自分のシークレットを選択します。

1. **[Secrets details]** (シークレットの詳細) セクションで、**[Actions]** (アクション) を選択し、**[Delete secret]** (シークレットの削除) を選択します。

1. シー**クレットの無効化と削除のスケジュール**ダイアログボックスで、待機期間を入力し、**削除のスケジュール**を選択します。Secrets Manager はシークレットにすぐにアクセスできなくなり、復旧ウィンドウ後に削除するようにスケジュールします。詳細については、「[AWS Secrets Manager シークレットを削除する](manage_delete-secret.md)」を参照してください。

**ローテーションロールを削除するには (コンソール)**

1. [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)。