我只想在我的电脑上运行aws-cli或我的应用程序(使用aws-sdk(,而不是在我的IAM用户的权限下运行aws服务。在这种情况下,我是否必须在我的电脑上存储与IAM用户相关的永久访问密钥/机密密钥?
我想使用assume_role
只使用临时访问密钥,但我认为我需要一个永久访问密钥才能在程序访问中调用assume_role
。专注于安全,似乎没有专业人士走这条路(除非强制MFA(
我说得对吗?我错过什么了吗?
如果您不希望PC具有永久访问权限,则意味着您希望用户提供某种机密来证明其身份,并在需要访问时调用assume_role
。我能想到的选择很少。
MFA
正如您正确指出的,在这种情况下,机密可以是MFA PIN,并且您强制MFA,除非用户通过MFA身份验证,否则不允许任何操作。这样,即使您存储了accesskey/secretkey,如果没有MFA,它们也毫无意义。
控制台
提供secret的另一种方法当然是进入控制台并输入密码。然后从IAM生成accesskey/secretkey,然后做你需要做的事情。然后,一旦完成,就撤销密钥。
加密
另一方面,如果您不介意拥有永久访问权限,则可以对accesskey/secretkey文件进行加密。例如,用密码压缩您的aws凭据文件。需要时随时解锁,完成后再次删除。
最后备注
由于无法逃避提供某种形式的秘密的需要,我认为这一步是不可避免的。从上面的例子来看,MFA对我来说是最方便、最安全的方法
使用AWS SSO管理用户。然后,用户可以通过键入"aws-sso-login"登录到aws-cli,打开web浏览器并启动auth-flow。此方法不要求在本地安装机密。
https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html
看看AWS STS(简单令牌服务(。https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html
此服务将创建临时安全凭据和会话令牌,一旦会话过期,这些密钥将毫无用处。这比在任何地方对任何钥匙进行硬编码要好得多。
按照说明文件从CLI使用STS。https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#using-临时信用证sdk-cli