Назад | Перейти на главную страницу

Как заставить terraform взять на себя другую роль STS для одного изменения ресурса в другой учетной записи?

У меня есть субаккаунты AWS для разработки, контроля качества и производства под основной учетной записью, которая контролирует все наши зоны route53. Я все управляю с Terraform. Я использую роли перекрестных учетных записей STSAssumeRole из этой основной учетной записи для доступа к дополнительным учетным записям. Я использую роль arn в моем файле .aws / config и говорю провайдеру aws использовать профиль учетной записи, которую я хочу использовать.

В настоящее время я пытаюсь выяснить, как разрешить terraform создавать или изменять зоны route53 в этой родительской учетной записи при работе с использованием профиля одной вспомогательной учетной записи (которая предполагает роль sts).

Когда я пытаюсь применить свой ресурс route53, я получаю следующую ошибку: «aws_route53_record.default: AccessDenied: User: arn: aws: sts :: ID-OF-SUB-ACCOUNT: loaded-role / Cross-Production / COMPANYNAME-prod- 01-awsume-session не авторизован для доступа к этому коду состояния ресурса: 403, идентификатор запроса: BLAHBLAHBLAH "

Я использую awsume для замены env моего профиля на лету, когда я не хочу указывать --profile в командной строке.

Мне нужно найти способ указать terraform принять на себя другую роль или перестать предполагать текущую роль (что вернет ее пользователю администратора в основной учетной записи). Не совсем уверен, как это сделать. Какие-либо предложения?

Terraform поддерживает несколько провайдеров

provider.tf

# default provider
provider "aws" {
  access_key = "foo"
  secret_key = "bar"
  region     = "us-east-1"
}

provider "aws" {
     alias  = "aws-assume"
     assume_role {
        role_arn     = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"
        session_name = "SESSION_NAME"
        external_id  = "EXTERNAL_ID"
     }
 }

и в использовании ресурсов

resource "aws_instance" "foo" {
  provider = "aws.aws-assume"

  # ...
}