如何为 Amazon Keyspaces 创建和配置 AWS 证书 - Amazon Keyspaces(Apache Cassandra 兼容)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

如何为 Amazon Keyspaces 创建和配置 AWS 证书

要使用 AWS CLI、软件开发工具包或 Cassandra 客户端驱动程序和 Sigv4 插件以编程方式访问 Amazon AWS Keyspaces,您需要一个具有访问密钥的 IAM 用户或角色。当您 AWS 以编程方式使用时,您需要提供 AWS 访问密钥,以便 AWS 可以在编程调用中验证您的身份。您的访问密钥由访问密钥 ID(例如,AKIAIOSFODNN7EXAMPLE)和秘密访问密钥(例如 wjalrxutnfemi/k7mdeng/ CYEX bPxRfi AMPLEKEY)组成。AKIAIOSFODNN7EXAMPLE 本主题将引导您完成此过程中的必要步骤。

安全最佳实践建议您创建权限有限的 IAM 用户,改为将 IAM 角色与执行特定任务所需的权限相关联。然后,IAM 用户可以临时担任 IAM 角色来执行所需任务。例如,您账户中使用 Amazon Keyspaces 控制台的 IAM 用户可以在控制台中切换到角色以临时使用该角色的权限。该用户放弃自己的原始权限,采用分配给该角色的权限。用户退出角色时,将恢复其原始权限。用户用于担任该角色的凭证是临时的。相反,IAM 用户拥有长期证书,如果他们没有担任角色,而是直接分配给他们的权限,则会带来安全风险。为帮助减轻这种风险,我们建议仅向这些用户提供执行任务所需的权限,并在不再需要这些用户时将其移除。有关角色的更多信息,请参阅 IAM 用户指南中的角色常见场景:用户、应用程序和服务

适用于 Cassandra AWS CLI客户端驱动程序的、 AWS 软件开发工具包或 Amazon Keyspaces Sigv4 插件所需的凭证

对 IAM 用户或角色进行身份验证需要以下凭证:

AWS_ACCESS_KEY_ID

指定与 IAM 用户或角色关联的 AWS 访问密钥。

以编程方式连接 Amazon Keyspaces 需要使用访问密钥 aws_access_key_id

AWS_SECRET_ACCESS_KEY

指定与访问密钥关联的私有密钥。这基本上是访问密钥的“密码”。

以编程方式连接 Amazon Keyspaces 需要使用 aws_secret_access_key

AWS_SESSION_TOKEN – 可选。

指定在使用您直接从 AWS Security Token Service 操作中检索的临时安全凭证时需要的会话令牌值。有关更多信息,请参阅 使用 IAM 角色和 Sigv4 插件以及临时凭证连接 Amazon Keyspaces

如果您使用 IAM 用户进行连接,则不需要 aws_session_token

创建 IAM 用户以编程方式访问您账户中的 Amazon Keyspaces AWS

要通过 AWS CLI、软件开发工具包或 Sigv4 插件获取以编程方式访问 Amazon AWS Keyspaces 的证书,您需要先创建 IAM 用户或角色。以下步骤显示了创建 IAM 用户并将该 IAM 用户配置为以编程方式访问 Amazon Keyspaces 的过程:

  1. 在 AWS Management Console、、Windows 工具中创建用户 PowerShell,或者使用 AWS API 操作创建用户。 AWS CLI如果您在中创建用户 AWS Management Console,则会自动创建凭据。

  2. 如果以编程方式创建用户,您必须通过额外步骤为该用户创建访问密钥(访问密钥 ID 和秘密访问密钥)。

  3. 向用户授予访问 Amazon Keyspaces 的权限。

有关创建用户所需的权限的信息,请参阅访问 IAM 资源所需的权限

创建 IAM 用户(控制台)

您可以使用 AWS Management Console 来创建 IAM 用户。

创建具有编程访问权限的 IAM 用户(控制台)
  1. 登录 AWS Management Console 并打开 IAM 控制台,网址为 https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Users(用户),然后选择 Add users(添加用户)。

  3. 为新用户键入用户名。这是的登录名。 AWS

    注意

    用户名可以是一个最多由 64 个字母、数字和以下字符构成的组合:加号 (+)、等号 (=)、逗号 (,)、句点 (.)、at 符号 (@)、下划线 (_) 和连字符 (-)。账户中的名称必须唯一。名称不区分大小写。例如,您不能创建名为 TESTUSERtestuser 的两个用户。

  4. 选择访问密钥 - 编程访问,为新用户创建一个访问密钥。您可以在转到最终页面后查看或下载访问密钥。

    选择下一步:权限

  5. 设置权限页面,选择直接附加现有策略,为新用户分配权限。

    此选项显示您账户中可用的 AWS 托管和客户托管策略列表。您可以在搜索字段中输入 keyspaces,以仅显示与 Amazon Keyspaces 相关的策略。

    对于 Amazon Keyspaces,可用的托管策略是 AmazonKeyspacesFullAccessAmazonKeyspacesReadOnlyAccess。有关每项策略的更多信息,请参阅 适用于 Amazon Keyspaces 的 AWS 托管式策略

    出于测试目的和按照连接教程进行操作,请为新 IAM 用户选择AmazonKeyspacesReadOnlyAccess策略。注意:作为最佳实践,我们建议您遵循最低权限原则并创建自定义策略,限制对特定资源的访问并仅允许所需操作。有关 IAM policy 的更多信息以及查看 Amazon Keyspaces 的示例策略,请参阅Amazon Keyspaces 基于身份的策略。创建自定义权限策略后,将您的策略附加到角色,然后让用户暂时扮演相应的角色。

    选择下一步:标签

  6. 添加标签(可选)页面,您可以为用户添加标签,或选择下一步:审核

  7. 审核页面,您可以看到目前所做的所有选择。如果您已准备好继续,请选择创建用户

  8. 要查看用户的访问密钥(访问密钥 ID 和秘密访问密钥),请选择密码和访问密钥旁边的 Show (显示)。要保存访问密钥,请选择下载 .csv,然后将文件保存到安全位置。

    重要

    这是您查看或下载秘密访问密钥的唯一机会,您需要提供这些信息,他们才能使用 SigV4 插件。将用户的新访问密钥 ID 和秘密访问密钥保存在安全的地方。完成此步骤后,您再也无法访问这些秘密访问密钥。

创建 IAM 用户 (AWS CLI)

您可以使用创建 AWS CLI IAM 用户。

创建具有编程访问权限的 IAM 用户 (AWS CLI)
  1. 使用以下 AWS CLI 代码创建用户。

  2. 向用户提供编程访问权限。这需要访问密钥,访问密钥可通过以下方式生成。

    • AWS CLI: aws iam create-access-key

    • 适用于 Windows 的工具 PowerShell:New-IAMAccessKey

    • IAM API:CreateAccessKey

      重要

      这是您查看或下载秘密访问密钥的唯一机会,您需要提供这些信息,他们才能使用 SigV4 插件。将用户的新访问密钥 ID 和秘密访问密钥保存在安全的地方。完成此步骤后,您再也无法访问这些秘密访问密钥。

  3. AmazonKeyspacesReadOnlyAccess 策略(用于定义用户权限的)附加到用户。注意:作为最最佳实践,我们建议您通过将用户添加到组并向该组附加策略(而不是直接附加到用户)来管理用户权限。

为 IAM 用户创建新访问密钥

如果您已经有 IAM 用户,可以随时创建新的访问密钥。有关密钥管理的更多信息(例如如何轮换访问密钥),请参阅管理 IAM 用户的访问密钥

为 IAM 用户创建访问密钥(控制台)
  1. 登录 AWS Management Console 并打开 IAM 控制台,网址为 https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择用户

  3. 选择所需用户的名称,以便为其创建访问密钥。

  4. 在用户的摘要页面身上,选择安全凭证选项卡。

  5. Access keys(访问密钥)部分中,选择 Create access key(创建访问密钥)。

    要查看新访问密钥对,请选择 Show (显示)。您的凭证与下面类似:

    • 访问密钥 ID:AKIAIOSFODNN7EXAMPLE

    • 秘密访问密钥:wjal bPxRfi rxutnfemi/k7mdeng/ CYEXAMPLEKEY

    注意

    关闭此对话框后,您将无法再次访问该秘密访问密钥。

  6. 要下载密钥对,请选择 Download .csv file(下载 .csv 文件)。将密钥存储在安全位置。

  7. 下载 csv 格式文件之后,选择 Close(关闭)

在创建访问密钥时,预设情况下,密钥对处于活动状态,并且您可以立即使用此密钥对。

如何管理 IAM 用户的访问密钥

作为最佳实践,我们建议您不要直接将访问密钥嵌入到代码中。借 AWS 助 SDK 和 AWS 命令行工具,您可以将访问密钥放在已知位置,这样您就不必将其保存在代码中。在以下任一位置中放置访问密钥:

  • 环境变量:在多租户系统上,选择用户环境变量,而不是系统环境变量。

  • CLI 凭证文件 – 在运行 credentials 命令时,将更新 configaws configure 文件。credentials 文件在 Linux、macOS 或 Unix 上位于 ~/.aws/credentials,在 Windows 上位于 C:\Users\USERNAME\.aws\credentials。该文件可以包含 default 配置文件和任何命名配置文件的凭证详细信息。

  • CLI 配置文件 – 在运行 credentials 命令时,将更新 configaws configure 文件。config 文件在 Linux、macOS 或 Unix 上位于 ~/.aws/config,在 Windows 上位于 C:\Users\USERNAME\.aws\config。该文件包含原定设置配置文件和任何命名配置文件的配置设置。

将访问密钥存储为环境变量是使用适用于 Apache Cassandra 的 4.x DataStax Java 驱动程序和 Sigv4 身份验证插件连接亚马逊密钥空间的tep-by-step 教程的前提条件。客户端使用默认凭证提供程序链来搜索凭证,存储为环境变量的访问密钥优先于所有其他位置,例如配置文件。有关更多信息,请参阅配置设置和优先顺序

下面的示例介绍您如何可以为默认用户配置环境变量。

Linux, macOS, or Unix
$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE $ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY $ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of security token>

设置环境变量会更改使用的值,直到 Shell 会话结束或直到您将该变量设置为其他值。通过在 shell 的启动脚本中设置变量,可使变量在未来的会话中继续有效。

Windows Command Prompt
C:\> setx AWS_ACCESS_KEY_ID AKIAIOSFODNN7EXAMPLE C:\> setx AWS_SECRET_ACCESS_KEY wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY C:\> setx AWS_SESSION_TOKEN AQoDYXdzEJr...<remainder of security token>

使用 set 设置环境变量会更改使用的值,直到当前命令提示符会话结束,或者直到您将该变量设置为其他值。使用 setx 设置环境变量会更改当前命令提示符会话和运行该命令后创建的所有命令提示符会话中使用的值。它 影响在运行该命令时已经运行的其他命令 shell。

PowerShell
PS C:\> $Env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" PS C:\> $Env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" PS C:\> $Env:AWS_SESSION_TOKEN="AQoDYXdzEJr...<remainder of security token>"

如果您在 PowerShell 提示符处设置环境变量(如前面的示例所示),则它只会在当前会话的持续时间内保存该值。要使环境变量设置在所有会话 PowerShell 和命令提示符会话中保持不变,请使用控制面板中的系统应用程序将其存储。或者,您可以通过将变量添加到您的 PowerShell 个人资料中来为所有将来的 PowerShell 会话设置该变量。有关存储环境变量或跨会话保存环境变量的更多信息,请参阅PowerShell 文档

使用 IAM 角色和 Sigv4 插件以及临时凭证连接 Amazon Keyspaces

为增强安全性,您可以使用临时凭证和 SigV4 插件进行身份验证。在许多情况下,您并不需要永不过期的长期访问密钥(如 IAM 用户访问密钥)。相反,您可以创建一个 IAM 角色并生成临时安全凭证。临时安全证书包括访问密钥 ID 和秘密访问密钥,以及一个指示证书何时到期的安全令牌。要详细了解如何使用 IAM 角色而不是长期访问密钥,请参阅切换到 IAM 角色 (AWS API)

要开始使用临时凭证,您首先需要创建一个 IAM 角色。

创建授予对 Amazon Keyspaces 的只读访问权的 IAM 角色。
  1. 登录 AWS Management Console 并打开 IAM 控制台,网址为 https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择角色,然后选择创建角色

  3. 创建角色页面上的选择受信实体类型下,选择 AWS 服务。在使用案例下,选择 Amazon EC2,然后选择下一步

  4. 添加权限页面的权限策略下,从策略列表中选择 Amazon Keyspaces 只读访问,然后选择下一步

  5. 命名、审核和创建页面上,为角色输入名称,并查看选择受信实体添加权限部分。您还可以在此页面上为角色添加可选标签。完成后,选择创建角色。请记住此名称,因为您在启动 Amazon EC2 实例时会用到它。

要在代码中使用临时安全证书,您需要以编程方式调用 AWS Security Token Service API,AssumeRole并从您在上一步中创建的 IAM 角色中提取生成的证书和会话令牌。然后,您可以使用这些值作为后续调用的凭据 AWS。下面的示例展示了有关如何使用临时安全凭证的伪代码:

assumeRoleResult = AssumeRole(role-arn); tempCredentials = new SessionAWSCredentials( assumeRoleResult.AccessKeyId, assumeRoleResult.SecretAccessKey, assumeRoleResult.SessionToken); cassandraRequest = CreateAmazoncassandraClient(tempCredentials);

有关使用 Python 驱动程序实施临时凭证以访问 Amazon Keyspaces 的示例,请参阅使用适用于 Apache Cassandra 的 Pyt DataStax hon 驱动程序和 SigV4 身份验证插件连接到亚马逊密钥空间

有关如何调用 AssumeRoleGetFederationToken 和其他 API 操作的详细信息,请参阅 AWS Security Token Service API 参考。有关从结果中获取临时安全凭证和会话令牌的信息,请参阅所用开发工具包的文档。您可以在主文档页面的 AWS 软件开发工具包和工具包部分找到所有软件开发工具包的AWS 文档