AWS 密钥管理的最佳实践

AWS 密钥的安全管理对于保护敏感数据和防止未经授权访问关键系统和应用程序至关重要。在当今快速升级的威胁环境中,组织必须确保其机密得到适当的管理和保护。

AWS 开发工具包(也称为 AWS 软件开发工具包)是一组软件开发工具和库,旨在使开发人员更轻松地在其应用程序中使用 AWS 服务。它提供了一个可访问的界面,用于轻松访问 AWS 上的 EC2、S3 和 DynamoDB 等资源。

但是,在使用 AWS 开发工具包与 AWS 服务交互时,必须适当管理用于身份验证和授权的密钥。这篇博文将介绍在 Python 中使用 AWS 开发工具包时管理 AWS 密钥的一些最佳实践。

先决条件

在使用适用于 Python 的 AWS 开发工具包安全地管理您的 AWS 密钥之前,请确保:

  • 对Python的基本理解和知识以及使用pip安装软件包的能力。
  • 具有访问 AWS 服务的适当权限的 AWS 账户。
  • 具有必要访问权限的 IAM 用户或角色。
  • Boto3,适用于Python的AWS 开发工具包,也应该使用pip安装在您的系统上。

代码中长期访问密钥和私有密钥的问题

将 AWS 开发工具包与 Python 结合使用时,不建议对长期访问密钥和私有密钥进行硬编码。这些凭证用于对 AWS 资源进行身份验证,这些密钥会带来安全风险,因为它们不会自动轮换。

以下是将长期访问密钥和私有密钥硬编码到代码中的一些潜在风险:

  • 代码共享增加了向访问者公开敏感信息的风险,无论是通过公共共享还是意外提交到公共仓库。
  • 轮换访问密钥和私有密钥可能具有挑战性,这可能会导致版本控制问题,并且需要在代码库中更新这些密钥的所有实例。

在下一节中,我们将了解如何使用临时密钥来解决此问题。

改用临时访问密钥

为了在将 AWS 开发工具包与 Python 结合使用时提高安全性,临时访问密钥是更好的解决方案。临时密钥是允许安全访问 AWS 资源的短期凭证。

以下是使用临时访问密钥的一些优点:

  • 首先,它们在指定的时间段(例如,一个月或一周)后过期,从而降低了未经授权访问的风险,并使管理资源访问变得更加容易。
  • 可以按需生成临时访问凭证,从而更简单、更轻松地为最终用户提供对 AWS 资源的访问权限,而无需为每个用户定义 AWS 身份。

注意*:AWS 安全令牌服务 (STS) 是生成临时访问密钥的实用程序。

使用 AWS CLI 管理 AWS 密钥

AWS CLI 是一个命令行工具,使工程师能够使用 CLI 命令与 AWS 服务进行交互。此外,AWS CLI 还可用于管理 AWS 密钥。

使用 AWS CLI 的优势之一是,它会自动从 AWS CLI 创建的凭证文件中获取 AWS 凭证(访问密钥和私有密钥),因此在创建 AWS 客户端时无需手动提供访问密钥和私有密钥。 

以下是在使用 AWS CLI 时在不指定访问密钥和私有密钥的情况下创建 AWS 客户端的示例:

​
import boto3
client = boto3.client('s3')


​

在此示例中,使用 s3 参数调用 boto3.client() 函数,为 Amazon S3 创建客户端。由于未指定访问密钥和私有密钥,因此 AWS 开发工具包将自动从 AWS CLI 创建的凭证文件中检索它们。

要创建凭证文件,请在终端中运行以下命令:

​
aws configure


​

此命令将提示您输入访问密钥、私有密钥、默认区域和输出格式。执行后,将在您的计算机上创建一个凭证文件,AWS 开发工具包可以在创建 AWS 客户端时自动搜索和检索该文件。

手动配置 AWS 密钥的方法

创建凭据文件的另一种方法是手动执行此操作。该文件的默认位置是 ~/.aws/credentials。凭证文件应至少指定访问密钥和秘密访问密钥。

在下面提供的示例文件中,帐户的访问密钥和私有密钥在默认配置文件中指定:

​
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY


​

使用 aws configure 命令时,不敏感的配置选项(如区域和输出格式)将保存在名为 config 的文件中。此文件也存储在主目录的 .aws 文件夹中。

[default]
region=us-west-2
output=json

创建多个命名配置文件

开发人员可以使用带有 --profile 选项的 aws configure 命令创建和配置其他配置文件来管理不同的 AWS 凭证集。或者,您可以手动将条目添加到配置和凭据文件中。这些文件存储每个配置文件的配置和访问密钥。

要添加新配置文件,您可以在配置和凭据文件中创建单独的命名配置文件。

下面是具有两个配置文件的凭据文件的示例:

​
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
[user1]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY


​

在此示例中,当使用 AWS CLI 命令而不指定配置文件时,将使用默认配置文件([默认])。第二个配置文件 ([user1]) 在运行带有 --profile user1 参数的命令时使用。该文件可以在 Linux 和 Mac 系统上的 ~/.aws/credentials 中找到。

注意*:Windows 系统的凭据位置是 %USER%\.aws\credentials。

管理 AWS CLI 配置设置

AWS CLI 提供了多个命令来管理配置设置。您可以使用 aws configure set 命令来修改或设置配置设置,并使用 aws configure get 命令来检索配置设置。以下是使用它们的方法:

设置配置设置

要设置任何配置设置,您可以使用 aws 配置 set 命令。使用 --profile 选项指定要修改的配置文件。例如,若要设置 USER 配置文件的区域,请运行以下命令:

aws configure set region me-south-1 --profile USER

您可以通过使用空字符串作为值或从配置和凭据文件中手动删除设置来删除配置设置。

检索配置设置

您可以检索使用 aws 配置 get 命令设置的配置设置。若要检索 USER 配置文件的区域设置,请运行以下命令:

aws configure get region --profile USER

导入 CSV 凭据

您可以使用 AWS 配置导入命令导入从 AWS Web 控制台生成的 CSV 凭证。CSV 文件必须包含以下标头:

  • 用户名
  • 访问密钥标识
  • 秘密访问密钥

若要从凭据.csv文件导入凭据,请运行以下命令:

aws configure import --csv file://credentials.csv

列表配置文件

您可以使用 aws 配置列表配置文件命令列出所有配置文件名称。

aws configure list-profiles --region <<YOUR_REGION>>

AWS 中安全凭证管理的最佳实践

使用 AWS 时,必须遵守凭证管理的最佳实践,以保护您的资源。以下是有关 AWS 开发工具包凭证管理的六个重要提示:

  1. 使用 AWS CLI 配置 AWS 密钥:避免将 AWS 访问密钥和私有密钥硬编码到代码中。相反,请利用 AWS CLI 来配置密钥并安全地存储它们。
  2. 使用 IAM 策略和角色限制对密钥的访问:使用 AWS Identity and Access Management (IAM) 策略和角色,将密钥的访问权限限制为仅需要密钥的用户和服务。
  3. 定期轮换密钥以最大程度地减少影响:定期轮换访问密钥、密码和其他机密,以最大程度地减少可能的影响。
  4. 最小化具有敏感权限的用户和服务:将访问敏感 AWS 资源的用户和服务的数量最小化,以减少潜在的攻击面。
  5. 监视和审计访问:监视和审计对 AWS 资源的访问,以及对访问密钥和密码的使用情况。
  6. 使用多因素身份验证:使用多因素身份验证来保护对 AWS 资源的访问,从而提高安全性。

结论

正确管理 AWS 凭证对于维护 AWS 资源的安全性至关重要。通过使用 AWS 的配置和凭证文件,您可以确保 AWS 访问密钥和私有密钥的安全,并与代码分开。此外,遵循最佳实践(例如使用 IAM 策略和角色限制对密钥的访问以及定期轮换密钥)可以进一步增强您的 AWS 凭证管理。

与往常一样,对潜在的安全漏洞保持警惕至关重要。因此,无论您是 AWS 新手还是经验丰富的专业人士,请记住正确管理 AWS 凭证的重要性,并采取措施确保您的 AWS 资源安全。

我们希望这篇博文能让您更好地了解如何管理 AWS 密钥并确保应用程序安全。

猜你喜欢

转载自blog.csdn.net/weixin_56863624/article/details/130605233
AWS
今日推荐