Como fazer a terraform assumir uma função STS diferente para uma única mudança de recurso em outra conta?

2

Eu tenho subcontas da AWS para desenvolvimento, controle de qualidade e produção em uma conta principal que controla todas as nossas zonas route53. Eu gerencio tudo com o Terraform. Eu uso as funções de conta cruzada STSAssumeRole dessa conta principal para acessar as subcontas. Eu uso o papel que está no meu arquivo .aws / config, e digo ao provedor aws para usar o perfil da conta que eu quero usar.

Atualmente, estou tentando descobrir como permitir que o terraform crie ou modifique zonas route53 nessa conta-mãe durante a execução usando o perfil de uma subconta (que assume uma função sts).

Eu recebo o seguinte erro ao tentar aplicar meu recurso route53: "aws_route53_record.default: AccessDenied: Usuário: arn: aws: sts :: ID-DE-SUB-ACCOUNT: função-assumida / Cross-Production / COMPANYNAME-prod-01-awsume-sessão não está autorizada a acessar este recurso         código de status: 403, id do pedido: BLAHBLAHBLAH "

Eu uso awsume para trocar o meu perfil de imediato quando não quero especificar --profile na linha de comando.

Eu preciso descobrir uma maneira de dizer ao terraform para assumir outro papel, ou parar de assumir sua função atual (que irá colocá-lo de volta no seu usuário admin na conta principal). Não tenho certeza como fazer isso embora. Alguma sugestão?

    
por Alex Vanino 27.12.2017 / 18:53

1 resposta

2

O Terraform suporta vários provedores

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"
     }
 }

e no uso de recursos

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

  # ...
}
    
por 28.12.2017 / 14:59