使用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
相关推荐
@insist12320 小时前
数据库系统工程师-云计算与大数据核心知识
大数据·数据库·云计算·软考·数据库系统工程师·软件水平考试
亚马逊云开发者1 天前
不用 Docker 也能跑 AI Agent | OpenClaw + Podman + EC2 Graviton + ECR 容器化部署全攻略
aws
AI周红伟1 天前
周红伟:OpenClaw 企业智能体:架构、治理与全球部署实战
人工智能·微信·架构·云计算·腾讯云·openclaw
Huy-C1 天前
云计算案例排错(云上3)
云计算
AI周红伟1 天前
周红伟:OpenClaw 企业级智能体架构与全栈实战
人工智能·微信·架构·云计算·腾讯云·openclaw
Huy-C2 天前
云计算案例排错(云上1)
云计算
Ynchen. ~2 天前
告别 OSS 强制下载!阿里云 OSS 绑定自定义域名实现文件在线预览全记录
阿里云·云计算·oss
Huy-C2 天前
云计算案例排错(云上2)
云计算
bug总结2 天前
小程序云函数 vs 传统前后端分离(阿里云)原理解析
阿里云·小程序·云计算