我使用boto3使用AWS IAM用户帐户详细信息检索redshift的临时DbPassword。生成的密码不正确,我在连接到Redshift时得到。
无效操作:用户
的IAM身份验证失败但是,如果我删除AWS_KEY和AWS_SECRET。它从aws配置文件读取并且生成的DbPassword是正确的并且它可以工作。我想在不使用Aws配置文件的情况下生成DbPassword。因为我需要在不能创建此配置文件的其他服务器上提取DbPassword。
{\rtf1\fbidis\ansi\ .....
答案 0 :(得分:0)
将AWS凭据放入脚本/程序中被认为是不好的做法。这是因为凭据可能会意外地存储在源代码存储库中并且“在野外”出现。它还使得轮换凭证变得困难。
如何提供凭据对API调用是否有效无影响。
当您不在代码中嵌入了凭据时,您的代码可以运行,这表明存储在~.aws/credentials
文件中的凭据具有正确的权限,而您插入的凭据进入代码没有必要的权限。
因此,您应该比较凭据并确定您真正希望使用哪些凭证。
我建议您为此应用程序创建特定的IAM用户,并将与用户关联的权限限制为仅有必要。这样,如果凭证是由某人获得的,则他们可以做的事情受到限制。
更重要的是,通过CREATE USER命令在Amazon Redshift中创建特定用户会更好。然后,将Redshift用户的密码分发给每台计算机(因为他们无论如何都需要AWS凭证,那么为什么不给每台计算机提供密码?)。
或者,使用AWS Secrets Manager安全地将密码提供给其他计算机。因此,您将调用Secrets Manager而不是get_cluster_credentials()
API调用。