Terraform - 具有编程访问权限的 AWS IAM 用户
Posted
技术标签:
【中文标题】Terraform - 具有编程访问权限的 AWS IAM 用户【英文标题】:Terraform - AWS IAM user with Programmatic access 【发布时间】:2020-03-10 04:42:25 【问题描述】:我正在通过terraform 与aws 合作。 我正在尝试创建一个访问类型为“Programmatic access”的 IAM 用户。
使用 AWS 管理控制台,这非常简单:
在尝试使用 Terraform (reference to docs) 时,似乎只支持以下参数:
name
path
permissions_boundary
force_destroy
tags
也许这应该通过策略进行配置? 任何帮助将不胜感激。
(*) Related question 不同的场景。
【问题讨论】:
【参考方案1】:您可以使用aws_iam_access_key
(https://www.terraform.io/docs/providers/aws/r/iam_access_key.html) terraform 资源为用户创建访问密钥,这意味着该用户拥有Programmatic Access
。
希望这会有所帮助。
【讨论】:
是的,大概就是这样。我希望 AWS_IAM_USER 资源中支持“程序访问”(布尔值)的参数,它将提供“访问密钥”作为属性。【参考方案2】:aws_iam_user
资源还需要为它创建一个 aws_iam_access_key
资源。
iam-user 模块有 a comprehensive example 使用它。
您也可以直接从注册表中使用该模块,让它为您完成所有工作。
【讨论】:
【参考方案3】:如果您不想加密并且只是在访问密钥和秘密密钥中寻找纯文本,您可以使用此
main.tf
resource "aws_iam_access_key" "sagemaker"
user = aws_iam_user.user.name
resource "aws_iam_user" "user"
name = "user-name"
path = "/"
data "aws_iam_policy" "sagemaker_policy"
arn = "arn:aws:iam::aws:policy/AmazonSageMakerFullAccess"
resource "aws_iam_policy_attachment" "attach-policy"
name = "sagemaker-policy-attachment"
users = [aws_iam_user.user.name]
policy_arn = data.aws_iam_policy.sagemaker_policy.arn
output.tf
output "secret_key"
value = aws_iam_access_key.user.secret
output "access_key"
value = aws_iam_access_key.user.id
你会得到Access key和secret key变成纯文本就可以直接使用了。
【讨论】:
以上是关于Terraform - 具有编程访问权限的 AWS IAM 用户的主要内容,如果未能解决你的问题,请参考以下文章
将 aws 资源导入具有 for_each 的 terraform 模块
如何将 AWS cloudwatch 事件添加到基于具有 terraform 的容器映像的 aws_lambda_function?
terraform/aws lambda 函数访问在 s3 上被拒绝