Terraform Cloud / Enterprise - Как использовать AWS Предполагаемые роли - PullRequest
0 голосов
/ 08 апреля 2020

Я хотел бы использовать AWS Предполагаемые роли с Terraform Cloud / Enterprise

В Terraform Open Source вы обычно просто делаете Assume Role, используя .aws / Профиль учетных данных в CLI, который является начальной аутентификацией и выполняет роль предположения:

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

Проблема заключается в том, что при использовании Terraform Enterprise или Cloud вы не можете ссылаться на профиль как на неизменную инфраструктуру не будет иметь этот файл в своем каталоге.

Terraform Cloud / Enterprise должен иметь идентификатор ключа доступа и секретный ключ доступа, заданные в качестве переменной, чтобы его инфраструктура могла выполнять запуск Terraform через его конвейер и аутентифицируйтесь на какой-либо AWS учетной записи, которую вы хотели бы предоставить в.

Таким образом, вопрос : Как я могу выполнить роль AWS Assume, используя Access Идентификатор ключа и секретный ключ доступа для учетной записи AWS с «действием»: «sts: AssumeRole», Policy?

Я думаю, что ниже будет работать, однако Terraform выполняет первоначальную аутентификацию с помощью AWS учетных данных профиля учетных записей, для учетной записи, которая имеет политику sts: AssumeRole

Может ли Terraform взглянуть на access_key и secret_key, чтобы определить, что AWS учетную запись, которую следует использовать при попытке взять на себя роль, а не использовать AWS Профиль учетных данных?

provider "aws" {
  region                  = var.aws_region
  access_key              = var.access_key_id
  secret_key              = var.secret_access_key

    assume_role {
    role_arn     = "arn:aws:iam::566264069176:role/RemoteAdmin"
    #role_arn     = "arn:aws:iam::<awsaccount>:role/<rolename>" # Do a replace in "file_update_automation.ps1"
    session_name = "RemoteAdminRole"
  }
}

Для того, чтобы Terraform Cloud / Enterprise мог получить новые жетоны предположений о роли, ему нужно будет использовать Access_key и Secret_key, чтобы сообщить ему, что у AWS учетной записи есть роль sts: предположить, ссылка на участника AWS учетной записи, которую нужно подготовить, а не AWS Creds Profile

Спасибо

...