Introduzione
In questo articolo vedremo come creare un ruolo IAM. Prima di procedere, presumo che tu abbia familiarità con le basi di Terraform e dei ruoli AWS IAM. In questo articolo creeremo un ruolo e gli assegneremo le autorizzazioni di amministratore.
Prerequisiti
- Conoscenza di base di Terraform.
- Terraform installato sul tuo sistema.
- Account AWS (crea se non ne hai uno).
- 'access_key' e 'secret_key' di un utente AWS IAM.
Cosa faremo
- Scrivi file di configurazione Terraform per creare un ruolo IAM.
- Crea un ruolo IAM utilizzando i file di configurazione di Terraform.
- Elimina il ruolo IAM creato utilizzando Terraform.
Scrivere i file di configurazione di Terraform per il ruolo IAM
Crea una directory dedicata in cui puoi creare file di configurazione di terraform.
Utilizzare il comando seguente per creare una directory e modificare la directory di lavoro attuale in essa.
mkdir terraform
cd terraform/
Sto usando "vim" come editor per scrivere nei file, puoi usare un editor a tua scelta e copiare incollare le seguenti configurazioni per creare variabili.tf, terraform.tfvars e main.tf
Crea 'main.tf' che è responsabile della creazione di un ruolo IAM in AWS. Questo main.tf leggerà i valori delle variabili da variabili.tf e terraform.tfvars.
vim main.tf
provider "aws" {
region = "${var.region}"
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
}
data "aws_iam_policy_document" "cross_account_assume_role_policy" {
statement {
effect = "Allow"
principals {
type = "AWS"
identifiers = var.principal_arns
}
actions = ["sts:AssumeRole"]
}
}
resource "aws_iam_role" "cross_account_assume_role" {
name = var.name
assume_role_policy = data.aws_iam_policy_document.cross_account_assume_role_policy.json
}
resource "aws_iam_role_policy_attachment" "cross_account_assume_role" {
count = length(var.policy_arns)
role = aws_iam_role.cross_account_assume_role.name
policy_arn = element(var.policy_arns, count.index)
}
Significato degli argomenti utilizzati nella configurazione precedente:
- assume_role_policy - (Obbligatorio) Il criterio che concede a un'entità l'autorizzazione ad assumere il ruolo.
- policy_arn (Obbligatorio) - L'ARN della politica che desideri applicare
Crea 'variables.tf' che contiene la dichiarazione e la definizione delle variabili.
La variabile "principal_arns" contiene il numero di account AWS a cui è consentito assumere l'utilizzo di questo ruolo. Puoi anche passare un elenco di numeri di conto qui.
La variabile "policy_arns" contiene l'ARN della politica che dobbiamo allegare al ruolo che creeremo. Puoi anche passare un elenco di ARN di policy qui.
vim variables.tf
variable "access_key" {
description = "Access key to AWS console"
}
variable "secret_key" {
description = "Secret key to AWS console"
}
variable "region" {
description = "Region of AWS VPC"
}
variable "name" {
default = "myrole"
type = "string"
description = "The name of the role. "
}
variable "principal_arns" {
default = ["123456789012"]
type = list(string)
description = "ARNs of accounts, groups, or users with the ability to assume this role."
}
variable "policy_arns" {
default = ["arn:aws:iam::aws:policy/AdministratorAccess"]
type = list(string)
description = "List of ARNs of policies to be associated with the created IAM role"
}
Dopo aver creato 'variables.tf', non dimenticare di modificare i valori assegnati alle variabili. È necessario modificare i valori evidenziati poiché sono specifici del mio ambiente. Puoi mantenere le altre variabili così come sono. Se non vuoi assegnare l'accesso come amministratore al ruolo che stai creando puoi modificarlo definendo l'ARN della policy della tua policy preferita.
Crea 'terraform.tfvars' che contiene la definizione delle variabili access_key e secret_key definite nel file sopra. Abbiamo mantenuto la dichiarazione di queste 2 variabili nel file 'terraform.tfvars' insieme a region.
Per creare un ruolo IAM non è necessaria una regione specifica, ho semplicemente tenuto questa variabile qui in modo che tu possa avere una comprensione di questa variabile di regione e puoi usarla negli altri file di creazione delle risorse.
Le seguenti chiavi devono essere modificate con le chiavi del tuo utente IAM. Prima di specificare queste chiavi, devi crearle dalla Console AWS e non condividerle con nessuno.
vim terraform.tfvars
region = "eu-west-3"
access_key = "AKIAQ6GAIA5XFLXF6HOV"
secret_key = "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"
Ora dovresti avere 3 file, vale a dire, variabili.tf, terraform.tfvars e main.tf
Creare un ruolo IAM utilizzando i file di configurazione di Terraform
Prima di eseguire i seguenti comandi, assicurati di aver configurato access_key e secret_key validi.
Il primo comando da utilizzare è 'terraform init
'. Questo comando scarica e installa i plug-in per i provider utilizzati nella configurazione. Nel nostro caso è AWS.
terraform init
Il secondo comando da utilizzare è 'terraform plan'. Questo comando viene utilizzato per visualizzare le modifiche che avranno luogo sull'infrastruttura.
terraform plan
Il comando 'terraform apply' creerà le risorse su AWS menzionate nel file main.tf. Ti verrà chiesto di fornire il tuo input per creare le risorse.
terraform apply
Quando esegui il comando sopra, al completamento con successo, puoi vedere che sono state aggiunte nuove risorse e 0 è stato distrutto.
Puoi accedere alla console AWS IAM in Ruolo per verificare se il ruolo IAM è stato creato o meno.
Elimina il ruolo IAM creato utilizzando Terraform
Se non hai più bisogno delle risorse che hai creato usando la configurazione menzionata nel file main.tf, puoi usare il comando "terraform destroy" per eliminare tutte quelle risorse.
terraform destroy
Conclusione
In questo articolo abbiamo visto i passaggi per creare un ruolo IAM con privilegi di amministratore. Abbiamo anche visto come il ruolo IAM può essere eliminato con un solo comando.