如何为 Amazon Keyspaces 创建和配置 Amazon 凭证 - Amazon Keyspaces(Apache Cassandra 兼容)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

如何为 Amazon Keyspaces 创建和配置 Amazon 凭证

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

Amazon CLI、Amazon SDK 或 Cassandra 客户端驱动程序的 Amazon Keyspaces SigV4 插件所需的凭证

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

AWS_ACCESS_KEY_ID

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

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

AWS_SECRET_ACCESS_KEY

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

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

AWS_SESSION_TOKEN – 可选。

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

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

在 Amazon 账户中创建 IAM 用户以便通过编程方式访问 Amazon Keyspaces

要获取使用 Amazon CLI、Amazon SDK 或 SigV4 插件对 Amazon Keyspaces 进行编程访问的凭证,首先需要创建一个 IAM 用户或角色。以下步骤显示了创建 IAM 用户并将该 IAM 用户配置为以编程方式访问 Amazon Keyspaces 的过程:

  1. 在 Amazon Web Services Management Console、Amazon CLI、Tools for Windows PowerShell 中或使用 Amazon API 操作创建用户。如果您在 Amazon Web Services Management Console中创建用户,则系统会自动创建凭证。

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

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

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

创建 IAM 用户(控制台)

您可以使用 Amazon Web Services Management Console 创建 IAM 用户。

创建具有编程访问权限的 IAM 用户(控制台)
  1. 登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

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

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

    注意

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

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

    选择Next: Permissions(下一步: 权限)

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

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

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

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

    请选择下一步:标签

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

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

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

    重要

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

创建 IAM 用户 (Amazon CLI)

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

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

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

    • Amazon CLI: aws iam create-access-key

    • Tools for Windows PowerShell: New-IAMAccessKey

    • IAM API:CreateAccessKey

      重要

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

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

为 IAM 用户创建新访问密钥

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

为 IAM 用户创建访问密钥(控制台)
  1. 登录 Amazon Web Services Management Console,单击 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择 Users(用户)。

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

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

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

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

    • 访问密钥 ID:AKIAIOSFODNN7EXAMPLE

    • 秘密访问密钥:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

    注意

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

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

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

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

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

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

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

  • 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 身份验证插件连接 Amazon Keyspaces 的分步教程的前提条件。客户端使用默认凭证提供程序链来搜索凭证,存储为环境变量的访问密钥优先于所有其他位置,例如配置文件。有关更多信息,请参阅配置设置和优先顺序

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

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 角色 ( API)。

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

创建授予对 Amazon Keyspaces 的只读访问权的 IAM 角色。
  1. 登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

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

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

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

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

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

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

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

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