使用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
相关推荐
A小辣椒5 天前
AWS Clould Support Engineer就职面试题
aws
tiancaijiben7 天前
阿里云Kubernetes集群托管完全指南:从创建到生产级运维
云计算
亚林瓜子8 天前
AWS WAF中如何放行某个触发了托管规则的接口
aws·waf
互联网推荐官8 天前
上海软件定制开发公司推荐:从PaaS工程化路径看D-coding的技术取舍
云原生·云计算·paas·软件开发·开发经验·上海
sbjdhjd8 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins
tiancaijiben8 天前
阿里云应用实时监控服务ARMS完全接入指南:从探针部署到全链路可观测
云计算
xingyuzhisuan8 天前
算力租赁平台 GPU 资源隔离方案:显存抢占问题深度排查与解决
大数据·云计算·gpu算力
workbuddy小能手8 天前
腾讯云ADP Agent Portal vs 自建智能体:架构选型对比
架构·云计算·腾讯云
宸津-代码粉碎机9 天前
Spring AI 企业级实战|智能记忆摘要+自动遗忘机制落地,彻底解决上下文爆炸与Token冗余
java·大数据·人工智能·后端·python·spring·云计算