Рубрики
Uncategorized

Inuducción a IAM — Día # 1 de Caminanando Con Se

Bienvenido Al Día # 1 De Caminando Con Se. POR LO GREAL, Entre Las Cosas Básicas Que Debemos Sab … Теги с AWS, SRE, DEVOPS.

Bienvenido Al Día # 1 De Caminando Con Se. POR LO GREAL, ENTRE LAS COSAS Básicas que debemos Saber e Atmitar en un proyeTo está la autenticación de usuarios, роли и др. En ede post, voy a explicaar (нет en profundidad) Qué ES EL Servicio de IAM EN AWS Y Cómo Construir Políticas Para Nuestros Roles/Usuarios Usando Infraestrouctura Como Código: Terraform.

Я

Идентификация и управление доступом (IAM) SE USA PARA ADDIVERAR EN AWS:

  • Лос Усиариос
  • Групос
  • Роли
  • API Ключи
  • Políticas de Acceso de Iam

Y Proporciona Acceso/Permisos de Acceso Los Recursos de AWS (COMO EC2, S3 ..).

Si Notamos En el Lado Drecho En La Parte Superior De La Consola, Dice Глобальный , ES DECIR, CREAN US USUARIO/GRUPOS/ROLES SE Appleará a Todas Las Regions. PARA CREAN UN NUEVO USUARIO, SIMPLEMENTE HAGA Нажмите EN USUARIOS EN La Barra de Navegación Izquierda.

POR DEFECTO, Custquier Nueva Cuenta Creada EN IAM No Tiene Acceso Algún Servicio de AWS (Denegación No Excensioncita).

Políticas de IAM: Una Política es un on documento que ustedece formentmente uno o más permisos.

LAS Políticas EN AWS Tiene El Siguiente Formato/Template:

POR EJEMPLO: IAM ProPorciona Algunas Plantillas de Políticas Preastruidas Para Asignar Asaarios Y Grupos.

  • АдминистраторCCess : Acceso Celliouso Los Recursos de AWS.
  • Пользовательский доступ к пользователю : Acceso de Администратор, Exce que Нет, не требуют La Adminifición de Usuarios/Grupos.
  • Прочитайте только доступ : COMO EL NOMBRE SUGIERE, EL USUARIOO SOLO PUEDE VER LOS RECURSOS DE AWS.

Демоны ООН Vistazo A Estas Políticas:

АдминистраторАКЦcess.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*"
    }
  ]
}

En El Ejemplo Anterior, La Política ESTA EN Режим Бога , Tiene Control Sobre Todas Las Acciones en ToDos Los Recursos de AWS.

Уна Буна Práctica en Asunto de Políticas de Seguridad, Es Asinar Políticas Personalizadas Para Esto, PODEMOS CREAR Nuestra Propia Política Personalizada Утилизандо ООН Генератор De Políticas (Polication Generator) O Escribirla Desde Cero. AL MENOS YO, USO Bastante Este Генератор политики

Хорошо, Ya Sabemos Que es Политика ООН, Ahora Vamos Crage Una Política Personalizada Donde Se Niega Todo Para Los Recursos EC2S:

{
   "Version":"2012–10–17",
   "Statement":[
      {
         "Sid":"Stmt1491718191000",
         "Effect":"Deny",
         "Action":[
            "ec2:*"
         ],
         "Resource":[
            "*"
         ]
      }
   ]
}

Поэлл:

  • Se judeds adduntar más de una política a unsuario o grupo al mismo tiempo.
  • La Política No Se judede Codundar Directimente Los Recursos de AWS (с. EJ., Instancia EC2).

Ya Hemos Visto Como Crog Políticas Malue Malue AW AWS, Pero Que Tal Si Hacemos Algo Más Automatizado: Como Crage Nuestros Usuarios y Políticas Usando Terraform … Sí, Lo Sé, Como Verdaderos трещины.

Creando Un Iam User Con Terraform

resource "aws_iam_user" "example" {
  name = "falcon"
}

Más ветживает aquí.

AHORA NECESITO CREAR DOS USUARIOS DE IAM. Una Forma de Lograr Lo Mismo Es Copiar y Pegar La Misma Pieza de Código, Перо Эси Анула Тодо Эль Пропозито де сухой. Terraform Proporciona Metaparámetros Llamados рецент PARA LOGRAR LO MIMSO, ES DECIR, HACER CIERTOS TIPOS de Bucles. EL Recuento ES OUT Metaparámetro Que Определить Cuántas Copias del Recurso Crage.

resource "aws_iam_user" "example" {
  count = 3
  name = "falcon"
}

ООН Subreda este Código Es Que Los Tres Usuarios de Iam Tendrían EL MISMO NOMPRE, LO Que Provocaría ООН ОШИБКА YA Que Los Nombres de Usuario Deben Ser únicos. PARA LOGRAR CREAR 3 USUARIOS CON DINTINTOS NOMBRES, PODEMOS USAR Count.index.index. Para Obtener El índice de Cada «Iteración» en el «Buscle»:

resource "aws_iam_user" "example" {
 count = 3
 name = "falcon.${count.index}"
}

Si Ejecutamos El Plan Neevamente, Veremos Que Terraform Quiere Cree Tres Usuarios de IAM, CADA UNO CON NOMBRE DIFERENETE (Falcon.0, Falcon.1, Falcon.2).

Piense en en encenario del Mundo Real, Diflcillente Veremos Nombres Como Falcon.0-2. Además, Esto No ES настраиваемые, Si Algún Día quiero Crear Más de 3 Usuarios, Debería Actualizar El Count, Esto Al Menos A Mí, нет мне Густа Таньто. Prefiero Teener Como Una lista de nombres y Que EL COMP SE CALLEL EN BASE ESO. Aunque. нет меня LO DIGAS, Sabes Que Esta Idea Es Super «Cool».

ОК, Mi Solución Para Este Flancea, Es Que Si Combinamos Count.index Conciones de Интерполяцион Integradas en Terraform, Podriamos Personalizar Cada «Iteración» del «Buscle» Aún Más. Para Lograr Esto, Necesitamos DOS Funciones de Interpolación de Longitud Y Elemento:

  • Элемент (список, индекс) -> Devualve un único elemento do una lista en en elndice dado. Si El Indice Es Mayor Que El Número de Eliventos, Esta Función SE Ajustará Utilizando Un Algoritmo de Modififación Estándar.

  • Длина (список) -> Devualve El Número de Miembros en una lista o mapa dados, o el número de caracteres en una cadena de carablees.

#variables.tf
variable "username" {
  type = "list"
  default = ["gerardo","lopez","falcon"]
}

#main.tf
resource "aws_iam_user" "example" {
  count = "${length(var.username)}"
  name = "${element(var.username, count.index )}"
}

Ахора, Куандо Ejecutas El План террафора Verás Que Terraform Quiere Crage Tres Usuarios de Iam, Cada Uno Con Nombre único.

POR EJEMPLO, SI DESEAS SOPORCIONAR EL NOMPREE DE RECURSO DE AMAZON (ARN) DE UNO DE LOS USUARIOS DE IAM COMO UNA PROUSE DE SALIDA, Podrías Hacer Lo Siguiente:

# outputs.tf
output "user_arn" {
 value = "${aws_iam_user.example.0.arn}"
}

Si Deseas Los Arns de Todos Los Usaarios de Iam Creebos Prevage, Debe Usar El Carácter Splat («*»), en lugar del índice:

# outputs.tf
output "user_arn" {
 value = "${aws_iam_user.example.*.arn}"
}

YA HEMOS TERMINADO DE CREAR US USUARIOE DE IAM, AHORA VAMOS ACDUTAR ALGUNA POLíTICA CON ESTOS USUARIOS (Recuerde Que Los Nuevos Usuarios POR DEFECTO NO TIENEN PERMISO ALGUNO).

IAM политики Las Políticas de Iam Son Documentos Json Que Se Utilizan Para Destripher Doctro de AWS. ESTOS SE Утилизан Para Otorgar A SUS USUARIOS DE AWS Acceso Recursos Sepeites de Aws.

Terraform Proporciona ООН источник данных útil llamado aws_iam_policy_document que nos brinda una forma más concisa de defire la política de iam:

data "aws_iam_policy_document" "example" {
  statement {
    actions = [
      "ec2:Describe*"]
    resources = [
      "*"]
  }
}
  • La Política de Iam Consta de Una O Más Делансионы.
  • CADA UNO DE LOS CAUATES Esperififea ООН Efecto (Ya Sea Mean «Permitir» o «denegar»).
  • ООН О Más Acciones (p. EJ., «EC2: Опишите *» «Подсильно тодас Las llmadas API A API enc2 que Comienzan Con El Nombre»).
  • Uno O Más Recursos (POR EJEMPLO »,» * «COOTEA» TODOS LOS Recursos «).

Para Crage Una Nueva Política Администрация POR IAM Partir de Este Documento, Debemos Usar El Recurroso aws_iam_policy. :

resource "aws_iam_policy" "example" {
 name = "ec2-read-only"
 policy = "${data.aws_iam_policy_document.example.json}"
}

El Siguiente Código USA EL Parámetro Count Para «Recorrer» Sobre Cada Uno de Nuestros de usuarios de iAm y uno de función de usaarios de enilectos para seleccionar el arn de cada usuario de la lista dehuelta por aws_iam_user.example. *. Прежний

resource "aws_iam_user_policy_attachment" "test-attach" {
 count = "${length(var.username)}"
 user = "${element(aws_iam_user.example.*.name,count.index )}"
 policy_arn = "${aws_iam_policy.example.arn}"
}

En El Código Anterior, Hemos Coduntado La Nueva Política EC2 - только для чтения Nuestros Usuarios de Iam.

Лос-роли де ЯАМ SE UTILIZAN PARA OTORGAL ACCESO A ALPACACION A LOS SERVICIOS DE AWS SIN USAR Credenciales. EL ROL DE IAM ES UNA DE LAS DEMAS Más Seguras de Dar Permiso Sus Instancias EC2. PodeMos Addundar Roles A UNA Instancia EC2, Y ESO NOS Perite Dar Permiso A La Instancia EC2 Para Usar Otros Servicios de AWS, POR EJEMPLO: Ведра S3.

VIY CREAR ООН Нуэво Политика Усандо Террафом, POR Ende Crare un Nuevo Archivo Llamado IAM.TF :

resource "aws_iam_role" "test_role" {
  name = "test_role"
  assume_role_policy = <

ESTO VA CREAR EL ROL DE IAM PERO NO PODEMOS VINCULLLO A La Instancia de AWS Directimente Y Para Eso, Necesitamos El Perfil de Instancia EC2:

resource "aws_iam_instance_profile" "test_profile" {
  name = "test_profile"
  role = "${aws_iam_role.test_role.name}"
}

Ahora, Si Ejecutamos El Código Anderior, TeneMos El Perfifle de Roles E Instancias, Перо Син Нингун Пермийсо. El Siguiente Paso ES Agregar Las Políticas de IAM Que Permiten Que La Instancia EC2 Ejecute Comandos Essicificos, POR EJEMPLO, Acceder A S3 Bucket:

resource "aws_iam_role_policy" "test_policy" {
  name = "test_policy"
  role = "${aws_iam_role.test_role.id}"
  policy = <

AdcunteMos Este Rol A La Instancia EC2:

resource "aws_instance" "role-test" {
  ami = "ami-0bbe6b35405ecebdb"
  instance_type = "t2.micro"
  iam_instance_profile = "${aws_iam_instance_profile.test_profile.name}"
}

ОК, Llegó El Momento de la Verdad, Executemos El Código:

1: ESTO ESCALIZARá EL Directorio de Trabajo de Terraform — Descargará Дополнительные товары Para unoveedor (Ejemplo: AWS)

terraform init

2: Разрешить Veru Qué Hará Terraform Antes de Realizar Los Cambios Reales «

terraform plan

3: Para Crage Realmente La Instancia, Necesitamos Ejecutar

terraform apply

PuEden IR A La Consola de AWS, Ver La Ins Instancia Creada Y Cuales Tiene Tapsianado.

Si Quieres Destruir La Infraestrouctura, Basta Con Ejecutar El Comando

terraform destroy

ESO Sería ToDo Por Este Primer Post. Espero que Les Sea de Utilidad Cuanto Tengan Que Trabajar Con Iam Y Terraform. Нет Овветн Compartir Y Si Les Gustó, Дарл «МЕГО ГУСТА», ЕСО мне Аюда Сейгур Криндо Contenido.

Оригинал: «https://dev.to/gelopfalcon/introduccion-a-iam-dia-1-de-caminando-con-un-sre-af2»