访问 AWS Key Management Service
您可以通过以下方式使用AWS KMS:
AWS Management Console
控制台是基于 Web 的用户界面,用于管理 AWS KMS 和 AWS 资源。如果您已注册 AWS 账户,可以通过登录 AWS Management Console并从 AWS Management Console主页选择 AWS KMS,访问 AWS KMS 控制台。
使用 AWS KMS 控制台所需的权限
要使用 AWS KMS 控制台,用户必须拥有一组最低权限来允许他们使用 AWS 账户 中的 AWS KMS 资源。除这些 AWS KMS 权限以外,用户还必须拥有列出 IAM 用户和 IAM 角色的权限。如果创建比必需的最低权限更为严格的 IAM policy,对于附加了该 IAM policy 的用户,AWS KMS 控制台将无法按预期正常运行。
有关允许用户对 AWS KMS 控制台进行只读访问所需的最低权限,请参阅允许用户在 AWS KMS 控制台中查看 KMS 密钥。
要允许用户使用 AWS KMS 控制台创建和管理 KMS 密钥,请向用户附加 AWSKeyManagementServicePowerUser 托管策略,如 针对高级用户的 AWS 托管策略 中所述。
对于通过 AWS SDK
AWS Command Line Interface
可以使用 AWS CLI 工具,在系统的命令行中发出命令或构建脚本来执行 AWS(包括 AWS KMS)任务。
有关通过 AWS CLI 使用 AWS KMS 的更多信息,请参阅 AWS CLI 命令参考
AWS KMS REST API
AWS KMS 架构的设计与编程语言无关,使用 AWS 支持的接口来存储和检索对象。您可以使用 AWS KMS REST API 以编程方式访问 S3 和 AWS。REST API 是面向 AWS KMS 的 HTTP 接口。借助 REST API,您可以使用标准 HTTP 请求创建、提取和删除存储桶和对象。
有关使用 AWS KMS REST API 的更多信息,请参阅 AWS Key Management Service API 参考。
AWS SDK
AWS 提供的 SDK(软件开发工具包)包含常用编程语言和平台(Java、JavaScript、C、Python 等)的库和示例代码。AWS SDK 提供了可通过编程方式访问 AWS KMS 和 AWS 的便捷方式。AWS KMS 是 REST 服务。您可以使用 AWS SDK 库向 AWS KMS 发送请求,该库包装了底层 AWS KMS REST API 并简化了编程任务。有关 AWS SDKs 的信息(包括如何下载及安装),请参阅在 AWS 上构建所用的工具
使用 AWS 开发工具包的 AWS KMS 代码示例 通过 AWS SDKs 为使用 AWS KMS 提供了一个很好的开始。
AWS Encryption SDK
AWS Encryption SDK 是在应用程序中实现客户端加密的工具。它不提供对 KMS 的完全访问权限,相反,它与 AWS KMS 集成,或者可以在不引用 KMS 密钥的情况下作为独立 SDK 使用。库可用于 Java、JavaScript、C、Python 和其他编程语言。
有关更多信息,请参见AWS Encryption SDK 开发人员指南。
AWS KMS key 策略和 IAM 策略
AWS KMS 最终一致性
由于系统的分布式特性,AWS KMS API 遵循最终一致性
当您执行 AWS KMS API 调用时,可能会出现短暂的延迟,才能使更改在整个 AWS KMS 中可用。更改通常需要不到几秒钟的时间即可在整个系统中传播,但在某些情况下,可能需要几分钟。在这段时间内,您可能会遇到意外错误,例如 NotFoundException
或 InvalidStateException
。例如,如果您在调用 CreateKey
后立即调用 GetParametersForImport
,则 AWS KMS 可能会返回 NotFoundException
。
我们建议您在 AWS KMS 客户端上配置重试策略,以便在短暂的等待时间后自动重试操作。有关更多信息,请参阅《AWS SDKs and Tools Reference Guide》中的 Retry behavior。
对于与授权相关的 API 调用,您可以使用授权令牌来避免任何潜在的延迟,并立即在授权中使用权限。有关更多信息,请参阅最终一致性(用于授权)。