ID 和秘密访问密钥)很复杂,即与控制台访问凭证不同冗长且不可读?一把钥匙,如果它的简单或复杂一旦被盗就无济于事,那么为什么不保持简单呢?
除了登录到 AWS CLI 之外,在哪些情况下只有访问密钥(访问密钥 ID 和秘密访问密钥)可以提供帮助,以及建议使用角色的最佳实践不切实际?
我不想猜测设计 AWS 身份验证的人的内心想法,但复杂的秘密通过使其更难猜测来提高安全性。它还会增加使用密钥编码的数据的复杂性,使其更难进行逆向工程。另外,没有人会输入它,所以没有必要有一个简短的秘密。
访问密钥和私有密钥用于向 AWS 发出的每个API 请求。这可以来自 AWS 命令行界面 (CLI) 或使用 AWS 开发工具包创建的任何软件。事实上,AWS CLI 只是一个使用 AWS SDK for Python(称为boto3
)的 Python 程序。
IAM 角色可以分配给 Amazon EC2 实例。然后,这将为实例提供临时访问密钥和私有密钥(请参阅从实例元数据检索安全凭证)。因此,角色只是提供访问密钥的一种安全方式,但仍使用访问密钥。
也可以假定IAM 角色以获取对资源的临时访问权限,但调用AssumeRole()
命令还需要访问密钥来进行身份验证并证明代入角色的权限。
唯一不需要访问密钥和私有密钥的情况是登录到 AWS 管理控制台,但控制台仍在使用访问密钥来调用 AWS API。
底线:访问 AWS 资源需要访问密钥和私有密钥。