使用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
相关推荐
xingyuzhisuan4 小时前
自建聚合网关VS第三方聚合平台,适配场景与数据实测
人工智能·ai·云计算·oneapi
万能的知了5 小时前
服务器托管 vs 云主机 vs 裸金属:一个决策故事
运维·服务器·云计算
溜达的大象6 小时前
从到处找资源到统一检索:飞牛NAS部署Pansou实战记录
网络·云计算
AKAMAI11 小时前
客户案例 | 重构部署体验,流媒体开源走向轻量化
开源·云计算
2301_7736436217 小时前
设置云备份
云计算
MR_Colorful17 小时前
阿里云ECS部署YOLO教程
yolo·阿里云·云计算
wanhengidc17 小时前
服务器 数据恢复
运维·服务器·网络·智能手机·云计算
翼龙云_cloud17 小时前
云服务器代理商:2026 年云计算趋势 AI 算力需求激增下的云服务器选择
服务器·人工智能·云计算·ai智能体
feiwuw17 小时前
私有云优缺点
云计算·私有云
Cloud_Shy61817 小时前
Linux 用户管理知识与应用实践(一:用户及用户组基础知识)
linux·运维·服务器·centos·云计算