本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建 Salesforce 客户密钥
在本教程中,您将创建 Salesforce 客户端密钥并将其 AWS Secrets Manager 作为托管外部密钥存储,开启托管轮换,然后通过将轮换凭据交换为访问令牌来测试轮换凭证。本教程大约需要 20-30 分钟才能完成。
本教程使用的 AWS 服务可能会对您产生费用 AWS 账户,包括您存储在 Secrets Manager 中的密钥的费用,以及客户托管密钥(如果您选择使用)的费用。有关更多信息,请参阅 定价。
注意
本教程以SalesforceClientSecret密钥类型为例。其他托管外部密钥类型也遵循类似的流程。您可以使用集成合作伙伴定义的格式创建密钥,开启托管轮换,然后使用轮换的证书。有关已注册合作伙伴的列表及其所需的密钥格式,请参阅。整合合作伙伴
在开始本教程之前,请确保您具有以下各项。
-
允许您创建外部客户端应用程序 (ECA) 的 Salesforce 账户(开发者或其他账户)。
-
您的管理权限 AWS 账户。在生产环境中,最佳做法是为不同的任务使用不同的角色。例如,在组织中管理密钥的角色将创建密钥,而一个单独的角色将在运行时使用该密钥。在执行教程步骤时,我们建议您继续使用相同身份。有关如何在生产环境中设置权限的信息,请参阅 的身份验证和访问控制 AWS Secrets Manager。
步骤 1:创建外部客户端应用程序并启用 OAuth
第一步是在 Salesforce 中创建外部客户端应用程序 (ECA) 并将其配置为 OAuth,这样 Secrets Manager 就可以轮换客户端密钥。有关完整的 Salesforce 程序,请参阅 Salesforce 文档中的使用外部客户端应用程序设置授权
设置 ECA 时,请务必配置以下内容:
-
在组织级别,启用 “允许通过 REST API 访问外部客户端应用程序消费者机密”。此设置允许 Secrets Manager 通过 Salesforce REST API 检索和轮换使用者密钥。
-
在 ECA 上,启用 OAuth 范围通过 API 管理用户数据 (api)。
-
在 ECA 上,启用 “启用客户端凭证流”。
-
在 ECA 上,启用 “启用令牌交换流程” 和 “需要为令牌交换流程提供密钥”。
创建 ECA 后,在下一步中收集需要存储在密钥中的值:
-
ECA Manager OAuth 设置中的使用者密钥(客户端 ID)和使用者密钥(客户端密钥)。
-
例如
https://,你的 Salesforce 我的域名基础网址。MyDomainName.my.salesforce.com -
ECA 的应用程序 ID 和消费者 ID。它们对应于 Salesforce 文档中的
external_client_app_identifier和consumer_id字段。要了解如何检索这些值,请参阅 Salesforce 文档中的暂存 OAuth 凭证。
有关密钥中每个必填字段的描述,请参阅Salesforce 客户密码。
步骤 2:创建托管外部密钥并启用轮换
接下来,你将 Salesforce 客户端密钥作为托管外部密钥存储在 Secrets Manager 中,然后开启托管轮换。使用托管轮换,您无需创建或维护 Lambda 轮换函数。Secrets Manager 会为你轮换密钥。
创建密钥并开启轮换(控制台)
打开 Secrets Manager 控制台,网址为https://console.aws.amazon.com/secretsmanager/
。 -
选择存储新密钥。
-
在 Choose secret type(选择密钥类型)页面上,执行以下操作:
-
对于密钥类型,请选择 Salesforce 客户机密托管外部密钥类型 (SalesforceClientSecret)。
-
输入 Salesforce 客户端密钥的密钥值字段:使用者密钥、消费者密钥、基本 URI、应用程序 ID 和消费者 ID。有关每个字段的说明,请参见Salesforce 客户密码。
-
对于加密密钥,请选择使用 fo aws/secretsmanagerr Secret AWS 托管式密钥 s Manager。使用此密钥不产生任何费用。您也可以使用自己的客户托管密钥。有关使用客户托管密钥的成本的信息,请参阅 定价。
-
选择下一步。
-
-
在 “配置密钥” 页面上,输入描述性密钥名称和描述,然后选择 “下一步”。
-
在 “配置轮换” 页面上,执行以下操作。对于托管的外部密钥,默认情况下,密钥创建期间会启用轮换。
-
确认自动旋转已开启。
-
在 “轮换元数据” 下,对于 API 版本 (
apiVersion),输入您的 Salesforce 组织的 API 版本。该字段为必填。它必须采用格式v,其中XX.XX为数字字符,并且必须至少为v65.0。如果您希望 Secrets Manager 使用一组单独的管理凭证轮换密钥,请同时提供管理员密钥 ARN。有关每个元数据字段的描述,请参阅Salesforce 客户密码。 -
在密钥轮换的服务权限中,选择创建新角色以自动创建一个 IAM 角色,该角色具有 Secrets Manager 轮换密钥所需的权限。默认情况下,权限仅限于创建密钥的 AWS 区域中的集成合作伙伴。有关更多信息,请参阅 安全性和权限。
-
在 “轮换计划” 下,按照 UTC 时区输入您的日程安排,例如每 30 天自动轮换一次。
-
选择下一步。
-
-
在 Review (审核) 页上,审核您的密钥详细信息,然后选择 Store (存储)。
有关为托管外部密钥配置轮换的更多方法,包括 AWS AWS CLI,请参阅轮换 Secrets Manager 托管的外部机密。
步骤 3:测试轮换后的凭证
最后一步是通过检索密钥值并将凭证交换为 Salesforce 访问令牌来确认轮换的证书是否有效。
检索密钥值(控制台)
打开 Secrets Manager 控制台,网址为https://console.aws.amazon.com/secretsmanager/
。 -
在密钥列表页上,选择您的密钥。
-
在 Secret details(秘密详细信息)页面上,向下滚动并选择 Retrieve secret value(检索秘密值)。记下当前
consumerKey和consumerSecret值。
注意
确认consumerKey和consumerSecret值实际上已与您最初存储的值相比发生了变化。如果它们没有更改,请等待几分钟,然后再次检查。如果它们仍未更改,请检查是否 AWS CloudTrail 有密钥RotationFailed的事件,其中包括有关轮换失败原因的详细信息。有关更多信息,请参阅 我的托管外部密钥无法轮换。
接下来,使用检索到的凭证向 Salesforce 申请访问令牌。MyDomainName用你的 Salesforce 我的域名替换,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 Secrets Manager 密钥 AWS CLI 的风险。
步骤 4:清理资源
为避免持续产生费用,请在不再需要本教程中创建的资源时将其删除:密钥和 Secrets Manager 创建的 IAM 轮换角色。删除密钥也会停止自动轮换。
删除密钥(控制台)
打开 Secrets Manager 控制台,网址为https://console.aws.amazon.com/secretsmanager/
。 -
在密钥列表页上,选择您的密钥。
-
在密钥详细信息部分中,选择操作,然后选择编辑描述。
-
在 “禁用密钥并计划删除” 对话框中,输入等待期,然后选择 “计划删除”。Secrets Manager 使密钥无法立即访问,并安排在恢复时段之后将其删除。有关更多信息,请参阅 删除一个 AWS Secrets Manager 机密密钥。
删除轮换角色(控制台)
-
在上打开 IAM 控制台 https://console.aws.amazon.com/iam/
,然后选择角色。 -
找到 Secrets Manager 为轮换创建的角色,将其选中,然后选择删除。有关更多信息,请参阅《IAM 用户指南》中的删除角色或实例配置文件。
后续步骤
-
要详细了解托管外部机密以及 Secrets Manager 与之集成的合作伙伴,请参阅使用 AWS Secrets Manager 管理外部机密以管理第三方机密。
-
要查看 Salesforce 所需的机密值和轮换元数据字段,请参阅Salesforce 客户密码。
-
有关为托管外部密钥设置轮换的更多方法,请参阅轮换托管的外部机密。
-
您可以通过缓存密钥来提高性能并降低成本。有关更多信息,请参阅 从那里获取秘密 AWS Secrets Manager。
-
要了解使用 Secrets Manager 的费用,请参阅定价。