View a markdown version of this page

Salesforce クライアントシークレットを作成する - AWS Secrets Manager

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

Salesforce クライアントシークレットを作成する

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

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

注記

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

このチュートリアルを開始する前に、以下の要件を満たしていることを確認してください。

  • 外部クライアントアプリケーション (ECAs) を作成できる Salesforce アカウント (開発者またはその他)。

  • への管理アクセス許可 AWS アカウント。本番稼働用設定では、タスクごとに異なるロールを使用するのがベストプラクティスです。たとえば、組織内のシークレットを管理するロールはシークレットを作成し、別のロールは実行時にシークレットを使用します。チュートリアルの各ステップでは同じアイデンティティを使用することが推奨されます。本番稼働環境で許可を設定する方法については、「の認証とアクセスコントロール AWS Secrets Manager」を参照してください。

ステップ 1: 外部クライアントアプリを作成し、OAuth を有効にする

最初のステップは、Salesforce で外部クライアントアプリ (ECA) を作成し、Secrets Manager がクライアントシークレットをローテーションできるように OAuth 用に設定することです。Salesforce の手順の詳細については、Salesforce ドキュメントの「外部クライアントアプリで認可を設定する」を参照してください。

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 認証情報」を参照してください。

シークレットで必要な各フィールドの説明については、「」を参照してくださいSalesforce クライアントシークレット。

ステップ 2: マネージド外部シークレットを作成し、ローテーションを有効にする

次に、Salesforce クライアントシークレットを Secrets Manager にマネージド外部シークレットとして保存し、マネージドローテーションを有効にします。マネージドローテーションでは、Lambda ローテーション関数を作成または維持しません。Secrets Manager はシークレットをローテーションします。

シークレットを作成してローテーションを有効にするには (コンソール)
  1. https://console.aws.amazon.com/secretsmanager/ から Secrets Manager コンソールを開きます。

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

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

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

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

    3. [Secrets Manager] (暗号化キー) で aws/secretsmanager を選択すると、Secrets Manager に AWS マネージドキー マネージドキーを使用します。このキーを使用してもコストは発生しません。独自のカスタマーマネージドキーを使用することもできます。カスタマーマネージドキーの使用料金の詳細については、「料金」を参照してください。

    4. [次へ] を選択します。

  4. シークレットの設定ページで、わかりやすいシークレット名と説明を入力し、次へを選択します。

  5. ローテーションの設定ページで、次の操作を行います。マネージド外部シークレットの場合、シークレットの作成中にローテーションがデフォルトで有効になります。

    1. 自動ローテーションがオンになっていることを確認します。

    2. ローテーションメタデータの API バージョン (apiVersion) に、Salesforce 組織の API バージョンを入力します。このフィールドは必須です。これは の形式である必要があります。vXX.XX は数字で、少なくとも である必要がありますv65.0。Secrets Manager で別の一連の管理認証情報を使用してシークレットを更新する場合は、管理者シークレット ARN も指定します。各メタデータフィールドの説明については、「」を参照してくださいSalesforce クライアントシークレット。

    3. シークレットローテーションのサービスアクセス許可で、新しいロールの作成を選択して、Secrets Manager がシークレットローテーションに必要なアクセス許可を持つ IAM ロールを自動的に作成します。デフォルトでは、アクセス許可はシークレットが作成された AWS リージョンの統合パートナーに限定されます。詳細については、「セキュリティおよびアクセス許可」を参照してください。

    4. ローテーションスケジュールに、UTC タイムゾーンでスケジュールを入力します。たとえば、30 日ごとに自動的にローテーションします。

    5. [次へ] を選択します。

  6. [Review] (レビュー) ページで、シークレットの詳細を確認し、[Store] (保存) を選択します。

など、マネージド外部シークレットのローテーションを設定するその他の方法については、 AWS CLI AWS 「」を参照してくださいSecrets Manager が管理する外部シークレットのローテーション。

ステップ 3: ローテーションされた認証情報をテストする

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

シークレット値を取得するには (コンソール)
  1. Secrets Manager コンソール (https://console.aws.amazon.com/secretsmanager/) を開きます。

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

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

注記

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

次に、取得した認証情報を使用して 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 を保存するリスクを軽減する」を参照してください。

ステップ 4: リソースをクリーンアップする

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

シークレットを削除するには (コンソール)
  1. Secrets Manager コンソール (https://console.aws.amazon.com/secretsmanager/) を開きます。

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

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

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

ローテーションロールを削除するには (コンソール)
  1. https://console.aws.amazon.com/iam/ で IAM コンソールを開き、ロールを選択します。

  2. Secrets Manager がローテーション用に作成したロールを見つけ、それを選択してから、削除を選択します。詳細については、「IAM ユーザーガイド」の「ロールまたはインスタンスプロファイルを削除する」を参照してください。

次の手順