使用AWS SSO + Terraform 管理AWS资源

在使用 Amazon Web Services(AWS)时,越来越多团队采用 SSO(Single Sign-On) 来统一身份管理,而不是使用长期的 Access Key。

与此同时,Terraform 作为 IaC(基础设施即代码)工具,也需要与 AWS SSO 集成,以实现安全、规范的资源管理。

1 AWS SSO 基础配置

1.1 启用 IAM Identity Center

  1. AWS Console → IAM Identity Center
  2. 点击 Enable
  3. Identity source 选择:
    Identity Center directory(内置)(个人用户推荐)
    不用接 AD / Okta

启用完成后你会看到:

Identity Center 启用成功

一个 SSO 登录 URL,比如https://d-xxxx.awsapps.com/start

1.2 创建 SSO 用户

  1. IAM Identity Center → Users
  2. Add user
  3. 填写:
    Username(比如:example)
    Email(必须能收邮件)
    First / Last name

保存后:

AWS 会发一封 激活邮件

设置密码后,这就是你未来唯一的登录入口

1.3 创建 Permission Set(Terraform 专用)

创建 Permission Set

  1. IAM Identity Center → Permission sets

  2. Create permission set

  3. 然后从AWS managed policies里选择需要的权限

    你可以先用较宽权限(后面再收紧):

    • AmazonAPIGatewayAdministrator
    • AmazonDynamoDBFullAccess
    • AmazonDynamoDBFullAccess_v2
    • AmazonEventBridgeFullAccess
    • AmazonS3FullAccess
    • AWSCertificateManagerFullAccess
    • AWSLambda_FullAccess
    • CloudWatchLogsFullAccess
    • IAMFullAccess
  4. 设置名字,比如TerraformPowerUserSession duration按默认设置保持1h即可,你也可以按需修改,超过这个时间你的token就会过期,需要重新登录。

1.4 把 Permission Set 分配给 AWS 账号 + 用户

IAM Identity Center → AWS accounts

选择你的 AWS 账号

Assign users or groups

选择:

User:example

Permission set:TerraformPowerUser

完成后,AWS 会:

自动创建一个 IAM Role(名字类似)

AWSReservedSSO_TerraformPowerUser_xxxxx

1.5 验证 Console 登录

打开 SSO 登录 URL,https://d-xxxx.awsapps.com/start

输入第一步中创建的用户名和密码,进入 AWS Console。

如果能正常进 Console,说明权限链路已经 OK。

2 配置Terraform

2.1 本地配置 AWS CLI SSO

bash 复制代码
aws configure sso

填写:

bash 复制代码
SSO session name (Recommended): sso-terraform
SSO start URL [None]: https://xxxx.awsapps.com/start
SSO region [None]: us-east-1
SSO registration scopes [sso:account:access]:

输入后会跳转浏览器登录。

2.2 创建tfstate bucket

手动到aws console对应region创建一个专门存放Terraform state文件的bucket,比如tf-state-example

2.2 Terraform provider 和backend配置

配置好对应的profile,以及

bash 复制代码
provider "aws" {
  region = "us-east-1"
  profile = "sso-terraform"
}
terraform {
  backend "s3" {
    bucket       = "tf-state-example"
    key          = "example/terraform.tfstate"
    region       = "us-east-1"
    profile      = "sso-terraform"
    use_lockfile = true
    encrypt      = true
  }
}

3 登录和初始化terraform

以上都配置好后,就可以login获取临时token了,

bash 复制代码
aws sso login --profile sso-terraform

执行命令后会跳转至浏览器,输入第一步配置的用户名和账号,aws还会提示设置MFA,提高完全系数。

鉴权成功后,就可以执行terraform initterraform plan来初始化和管理你的aws资源了。

4 权限管理架构

bash 复制代码
IAM Identity Center
 └── User(你)
      └── PermissionSet(TerraformPowerUser)
           └── IAM Role(自动)
                └── Terraform(STS 临时凭证)
                     └── S3 + DynamoDB backend
相关推荐
醇氧3 小时前
Hermes Agent 学习(安装部署详细教程)
人工智能·python·学习·阿里云·ai·云计算
easy_coder5 小时前
Agent:从原理、架构到工程落地(案例篇)
架构·云计算
腾讯云大数据5 小时前
腾讯云大数据出海实践:一套架构支撑跨国企业的全球数据平台
大数据·架构·云计算·腾讯云
翼龙云_cloud7 小时前
腾讯云代理商:云上 OpenClaw5 分钟接入 Slack 指南 AI 助手一键部署实战
服务器·人工智能·云计算·腾讯云·openclaw
Roselind_Yi10 小时前
云计算实验实操|Hadoop伪分布式部署+MapReduce编程实践(超详细图文版)
大数据·hadoop·经验分享·笔记·分布式·数据挖掘·云计算
AutoMQ1 天前
AWS 新发布的 S3 Files 适合作为 Kafka 的存储吗?
云原生·消息队列·云计算
byoass2 天前
企业云盘文件预览技术深度剖析:从10种常见格式到渲染架构实战
网络·安全·架构·云计算
墨客希2 天前
AWS PCA
云计算·aws
сокол2 天前
【网安-等保评测-基础记录】网络安全等级保护2.0 详解(定级、备案、测评、整改一站式指南)
网络·笔记·网络安全·云计算