Diferencia entre revisiones de «Comandos Frecuentes AWS CLI»
(No se muestran 17 ediciones intermedias del mismo usuario) | |||
Línea 43: | Línea 43: | ||
-- Listar todos los usuarios de una cuenta y filtrar por el usuario que en su nombre contenga "luis", por favor nota que las comillas del nombre son backticks como se les conoce en inglés o comilla invertida, no es la comilla simple. | -- Listar todos los usuarios de una cuenta y filtrar por el usuario que en su nombre contenga "luis", por favor nota que las comillas del nombre son backticks como se les conoce en inglés o comilla invertida, no es la comilla simple. | ||
− | aws iam list-users --query 'Users[?contains(UserName, `luis`)].UserName' --output text | + | aws iam list-users --query 'Users[?contains(UserName, `luis`)].UserName' --output text |
-- hacer grep a una salida de AWS CLI | -- hacer grep a una salida de AWS CLI | ||
Línea 93: | Línea 93: | ||
-- Para ver los logs de un stream específico usa el siguiente comando: | -- Para ver los logs de un stream específico usa el siguiente comando: | ||
− | aws logs get-log-events --log-group-name mis-logs-waf --log-stream-name "us-east-1_prod- | + | aws logs get-log-events --log-group-name mis-logs-waf --log-stream-name "us-east-1_prod-APIWAFy_9" |
-- Obtener los nombres de dominio asociados a un API Gateway | -- Obtener los nombres de dominio asociados a un API Gateway | ||
Línea 100: | Línea 100: | ||
-- Para solo filtrar el elemento DomainName del json del comando anterior se puede emplear la herramienta jq de la siguiente forma: | -- Para solo filtrar el elemento DomainName del json del comando anterior se puede emplear la herramienta jq de la siguiente forma: | ||
aws apigatewayv2 get-domain-names| jq '.Items[].DomainName' | aws apigatewayv2 get-domain-names| jq '.Items[].DomainName' | ||
+ | |||
+ | -- ver el contenido de la política | ||
+ | aws iam get-policy-version --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA --version-id v2 --query 'PolicyVersion.Document' --output json | ||
+ | |||
+ | -- ver la versión de la política contenido de una política | ||
+ | aws iam get-policy --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA --query 'Policy.DefaultVersionId' --output text | ||
+ | |||
+ | -- que políticas están vinculadas al usuario | ||
+ | aws iam list-user-policies --user-name mi-usuario-aws | ||
+ | |||
+ | -- que políticas in line están vinculadas al usuario | ||
+ | aws iam list-attached-user-policies --user-name mi-usuario-aws | ||
+ | |||
+ | -- crear una nueva versión de la política, actualizar la política y ponerla como default | ||
+ | aws iam create-policy-version --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA --policy-document file://habilitar-mfa.json --set-as-default | ||
+ | |||
+ | -- Traer la versión específica de la política | ||
+ | aws iam get-policy-version --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA --version-id v1 --query 'PolicyVersion.Document' --output json | ||
+ | |||
+ | -- Como listar los roles de una cuenta y listarlos por su nombre | ||
+ | aws iam list-roles --query 'Roles[].RoleName' | ||
+ | |||
+ | -- Como listar los roles de una cuenta y listarlos por su nombre, filtrar con grep las coincidencias por ejemplo con tools | ||
+ | aws iam list-roles --query 'Roles[].RoleName'|grep -i tools | ||
+ | |||
+ | -- Listar que que SCP existen | ||
+ | aws organizations list-policies --filter SERVICE_CONTROL_POLICY --max-items 25 | ||
+ | Es posible cambiar el número de elementos en el ejemplo se usaron 25 | ||
+ | |||
+ | -- Encontrar que políticas SCP aplican para una cuenta en particular | ||
+ | -- El primer paso es listar todas las cuentas en la organización | ||
+ | aws organizations list-accounts | ||
+ | |||
+ | -- Busca la cuenta de la cuál quieras saber sus datos y anota su id, con el id ahora buscaremos a que OU o unidad organizational pertenece, por ejemplo el id en este caso es: 123456789012 | ||
+ | aws organizations list-parents --child-id 123456789012 | ||
+ | |||
+ | -- Nuevamente anotar el id que aparece de la OU por ejemplo en este caso ou-klbr-srebil0k y ejecutar el siguiente comando | ||
+ | aws organizations list-policies-for-target --target-id ou-klbr-srebil0k --filter SERVICE_CONTROL_POLICY | ||
+ | |||
+ | Si existen políticas aplicadas para esta OU se mostraran a continuación. | ||
+ | |||
+ | -- También es posible que la política esté aplicada directamente para una cuanta en particular, para este caso ejecutar el comando: | ||
+ | aws organizations list-policies-for-target --target-id 123456789012 --filter SERVICE_CONTROL_POLICY | ||
+ | |||
+ | -- Listar todos los nombres de las cuentas que existen en la organización y solo mostrar el ID y el nombre en la misma línea | ||
+ | aws organizations list-accounts |jq -r '.Accounts[] | "\(.Id) - \(.Name)"' | ||
+ | |||
+ | Es posible agregarle el parámetro --profile account-master es para usar las credenciales de la cuenta master o principal. | ||
+ | |||
+ | -- Crear un dispositivo MFA | ||
+ | aws iam create-virtual-mfa-device --virtual-mfa-device-name mi-dispositivo-MFA --bootstrap-method QRCodePNG --outfile CodigoQR.png | ||
+ | { | ||
+ | "VirtualMFADevice": { | ||
+ | "SerialNumber": "arn:aws:iam::123456789012:mfa/mi-dispositivo-MFA" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | -- Habilitar un dispositivo MFA | ||
+ | aws iam enable-mfa-device --user-name mi-dispositivo-MFA --serial-number arn:aws:iam::123456789012:mfa/mi-dispositivo-MFA --authentication-code-1 866541 --authentication-code-2 987645 | ||
+ | |||
+ | -- Vincular el dispositivo con el usuario | ||
+ | aws iam attach-user-policy --user-name mi-usuario-AWS --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA | ||
+ | |||
+ | -- Crear el archivo de política con tu editor favorito | ||
+ | vi habilitar-mfa.json | ||
+ | |||
+ | { | ||
+ | "Policy": { | ||
+ | "PolicyName": "AllowCreateEnableMFA", | ||
+ | "PolicyId": "ABCDEFGHI5LUISN74EMXX", | ||
+ | "Arn": "arn:aws:iam::123456789012:policy/AllowCreateEnableMFA", | ||
+ | "Path": "/", | ||
+ | "DefaultVersionId": "v1", | ||
+ | "AttachmentCount": 0, | ||
+ | "PermissionsBoundaryUsageCount": 0, | ||
+ | "IsAttachable": true, | ||
+ | "CreateDate": "2023-04-21T23:40:35+00:00", | ||
+ | "UpdateDate": "2023-04-21T23:40:35+00:00" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | -- Crear la política con el archivo recién creado | ||
+ | aws iam create-policy --policy-name AllowCreateEnableMFA --policy-document file://habilitar-mfa.json | ||
+ | |||
+ | -- Listar todas las cuentas AWS en la organización | ||
+ | aws organizations list-accounts | ||
+ | |||
+ | La salida es algo similar a esto: | ||
+ | |||
+ | { | ||
+ | "Accounts": [ | ||
+ | { | ||
+ | "Id": "111111111111", | ||
+ | "Arn": "arn:aws:organizations::999999999999:account/o-3x69pob97t/111111111111", | ||
+ | "Email": "aws-tools@kolibers.com", | ||
+ | "Name": "tools", | ||
+ | "Status": "ACTIVE", | ||
+ | "JoinedMethod": "CREATED", | ||
+ | "JoinedTimestamp": "2020-05-27T13:36:19.045000-06:00" | ||
+ | }, | ||
+ | { | ||
+ | "Id": "222222222222", | ||
+ | "Arn": "arn:aws:organizations::999999999999:account/o-3x69pob97t/222222222222", | ||
+ | "Email": "aws-onekolibers-nonprod@kolibers.com", | ||
+ | "Name": "onekolibers-nonprod", | ||
+ | "Status": "ACTIVE", | ||
+ | "JoinedMethod": "CREATED", | ||
+ | "JoinedTimestamp": "2023-01-28T15:40:25.079000-06:00" | ||
+ | }, | ||
+ | { | ||
+ | "Id": "333333333333", | ||
+ | "Arn": "arn:aws:organizations::999999999999:account/o-3x69pob97t/333333333333", | ||
+ | "Email": "aws-integrations-prod@kolibers.com", | ||
+ | "Name": "integrations-prod", | ||
+ | "Status": "ACTIVE", | ||
+ | "JoinedMethod": "CREATED", | ||
+ | "JoinedTimestamp": "2022-01-25T10:38:07.487000-06:00" | ||
+ | }, | ||
+ | { | ||
+ | "Id": "444444444444", | ||
+ | "Arn": "arn:aws:organizations::999999999999:account/o-3x69pob97t/444444444444", | ||
+ | "Email": "aws-security@kolibers.com", | ||
+ | "Name": "security", | ||
+ | "Status": "ACTIVE", | ||
+ | "JoinedMethod": "CREATED", | ||
+ | "JoinedTimestamp": "2022-04-27T13:40:07.647000-06:00" | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | |||
+ | -- Para listar solo los números de cuenta, para este ejemplo usamos jq una utilería para trabajar con archivos json. | ||
+ | aws organizations list-accounts |jq -r '.Accounts[] | .Id' | ||
+ | |||
+ | -- Listar todas las cuentas en la organización y si nombre amigable a un lado, para este ejemplo usamos jq una utilería para trabajar con archivos json, el parámetro --profile cuenta-master es opcional será de acuerdo a tu archivo de configuración. | ||
+ | aws organizations list-accounts --profile cuenta-master |jq -r '.Accounts[] | "\(.Id) - \(.Name)"' | ||
+ | Ahora la salida es algo similar a esto: | ||
+ | |||
+ | 111111111111 - tools | ||
+ | 222222222222 - onekolibers-nonprod | ||
+ | 333333333333 - integrations-prod | ||
+ | 444444444444 - security | ||
+ | |||
+ | El resultado se puede pegar en un archivo de texto para futura referencia o se puede guardar en un archivo de texto desde la misma línea de comandos como se ve a continuación (el parámetro --profile cuenta-master es opcional será de acuerdo a tu archivo de configuración.) : | ||
+ | aws organizations list-accounts --profile cuenta-master |jq -r '.Accounts[] | "\(.Id) - \(.Name)"' > cuentas.txt | ||
+ | |||
+ | -- Como obtener los contactos alternativos de una cuenta en la organización | ||
+ | |||
+ | aws account get-alternate-contact --alternate-contact-type=SECURITY --account-id 123456789012 | ||
+ | |||
+ | Se obtendrá una salida como la siguiente: | ||
+ | |||
+ | { | ||
+ | "AlternateContact": { | ||
+ | "AlternateContactType": "SECURITY", | ||
+ | "EmailAddress": "lmoreno@kolibers.com", | ||
+ | "Name": "Luis Moreno", | ||
+ | "PhoneNumber": "+525558765432", | ||
+ | "Title": "Cloud Security Architect" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | -- Cómo cambiar los contactos alternativos de AWS desde la línea de comandos, si el comando funciona bien, no produce ninguna salida. | ||
+ | |||
+ | aws account put-alternate-contact \ | ||
+ | --account-id $word \ | ||
+ | --alternate-contact-type=SECURITY \ | ||
+ | --email-address=lmoreno@kolibers.com \ | ||
+ | --name="Luis Moreno" \ | ||
+ | --phone-number="+525566778899" \ | ||
+ | --title="Cloud Security Architect" | ||
+ | |||
+ | -- Cómo cambiar los contactos administrativos para toda la organización, primero deberás obtener una lista de todas las cuentas con uno de los comandos que están arriba y luego emplear un poco de Linux command Fu como se muestra a continuación. Para confirmar los cambios ejecutar el comando anterior en alguna de las cuentas. | ||
+ | |||
+ | for cuentas in `cat accounts-numbers.txt`; do aws account put-alternate-contact \ | ||
+ | --account-id $cuentas \ | ||
+ | --alternate-contact-type=SECURITY \ | ||
+ | --email-address=lmoreno@kolibers.com \ | ||
+ | --name="Luis Moreno" \ | ||
+ | --phone-number="+525566778899" \ | ||
+ | --title="Cloud Security Architect" \ | ||
+ | ; done; | ||
+ | |||
+ | -- Listar los access keys de un usuario (la opción --profile miperfil es opcional) | ||
+ | aws iam list-access-keys --user-name luismoreno --profile mi-perfil | ||
+ | |||
+ | -- eliminar un access key (la opción --profile miperfil es opcional) | ||
+ | aws iam delete-access-key --user-name luismoreno --access-key-id AKIA36UO4MZQN5MKFASR --profile mi-perfil | ||
+ | |||
+ | -- listar las políticas del usuario (la opción --profile miperfil es opcional) | ||
+ | aws iam list-attached-user-policies --user-name luismoreno --profile miperfil | ||
+ | |||
+ | -- Eliminar la política (la opción --profile miperfil es opcional) | ||
+ | aws iam detach-user-policy --user-name luismoreno --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess --profile mi-perfil | ||
+ | |||
+ | -- Listar a que grupos pertenece el usuario (la opción --profile miperfil es opcional) | ||
+ | aws iam list-groups-for-user --user-name luismoreno --profile miperfil | ||
+ | |||
+ | -- Listar las políticas in-line (la opción --profile miperfil es opcional) | ||
+ | aws iam list-user-policies --user-name luismoreno --profile miperfil | ||
+ | |||
+ | -- Quitar la política in-line (la opción --profile miperfil es opcional) | ||
+ | aws iam delete-user-policy --user-name luismoreno --policy-name mi-política --profile miperfil | ||
+ | |||
+ | -- Eliminar usuario, antes de poder eliminar el usuario se deben eliminar las llaves, políticas, políticas in-line, como se detalla en los comandos anteriores | ||
+ | aws iam delete-user --user-name lmorenodiagrams --profile palig-datacore-prod |
Revisión actual del 01:04 25 ago 2023
Comandos Frecuentes AWS CLI
Recuerda buscar con CTRL+F con acentos y sin acentos, a veces lo escribía con teclado en inglés y no era fácil poner los acentos.
Por ejemplo si quieres ver como se pone una ip fija en CentOS busca "direccion" así sin acento y vas saltando entre las respuestas hasta que encuentres lo que buscas.
Los comandos más comunes en AWS CLI
Es una compilación de comandos AWS CLI que fui haciendo mientras aprendía y que aún uso de referencia, espero que también les sirva a ustedes tanto como me ha servido a mí.
Lo primero que se debe hacer es instalar y configurar AWS CLI
-- configurar las llaves
aws configure
-- Conocer el ID de la cuenta actual
aws sts get-caller-identity --query 'Account' --output text
868765432181
-- Ver el alias de la cuenta o el nombre amistoso que se le da a la cuenta
aws iam list-account-aliases --query 'AccountAliases[0]' --output text
-- identificar con que cuenta estamos trabajando tipo whoami en linux
aws sts get-caller-identity
El resultado será un json con más o menos la siguiente información:
{ "UserId": "AIDA52SZJW52SZM5KLUIS", "Account": "868765432181", "Arn": "arn:aws:iam::868765432181:user/hackvolution" }
-- Describir los trails de la cuenta
aws cloudTrail describe-trails
-- Obtener el estado de un trail
aws cloudTrail get-trail-status --name arn:aws:cloudtrail:us-east-1:053329225524:trail/kolibers-cloudtrail-org-prod-security
-- Listar las cuentas que forman parte de la organización
aws organizations list-accounts
-- Listar todos los usuarios de una cuenta y filtrar por el usuario que en su nombre contenga "luis", por favor nota que las comillas del nombre son backticks como se les conoce en inglés o comilla invertida, no es la comilla simple.
aws iam list-users --query 'Users[?contains(UserName, `luis`)].UserName' --output text
-- hacer grep a una salida de AWS CLI
aws iam list-users |grep luis
-- Listar todas las access keys de una cuenta
for user in $(AWS IAM list-users --output-text | awk '{print $NF}'); do aws iam list-access-keys --user $user --output text; done
-- Listar todas las access keys de una cuenta, si tienes más de un perfil agregar la opción --profile
for user in $(AWS IAM list-users --output-text --profile miperfil2aws | awk '{print $NF}'); do aws iam list-access-keys --user $user --output text --profile miperfil2aws; done
-- Listar los buckets s3 que hay en la cuenta (o a los que tienes acceso)
aws s3 ls
-- Listar los archivos de un bucket
aws s3 ls s3://el-nombre-de-tu-bucket/
-- calcular el tamaño del bucket
aws s3 ls s3://el-nombre-de-tu-bucket --recursive --human-readable --summarize
Te dará una salida como la siguiente:
2022-02-22 11:04:13 121Kib Bytes archivos_importantes/0054321.csv 2022-02-22 11:04:21 57.9 MiB Bytes archivos_importantes/hackvolution_ai-x000.csv 2022-02-22 11:04:40 0 Bytes archivos_importantes_kolibers/_EXITO 2022-02-22 11:04:40 0 Bytes media_kolibers/registros_27000.csv 2022-02-22 11:04:40 147 Bytes archivos_importantes_/hvt_20230404.csv
Total Objects: 2486 Total Size: 3.4 GiB
-- Listar todos los delivery streams de Kinesis:
aws firehose list-delivery-streams
-- Describir delivery streams específicos
aws firehose describe-delivery-stream --delivery-stream-name nombre-del-delivery-stream
-- Listar todos los waf de una cuenta
aws wafv2 list-web-acls --scope REGIONAL
-- Listar todos los grupos de CloudWatch
aws logs describe-log-groups
-- Listar los log streams dentro de un grupo:
aws logs describe-log-streams --log-group-name tu-log-group-del-waf
-- Para ver los logs de un stream específico usa el siguiente comando:
aws logs get-log-events --log-group-name mis-logs-waf --log-stream-name "us-east-1_prod-APIWAFy_9"
-- Obtener los nombres de dominio asociados a un API Gateway
aws apigatewayv2 get-domain-names
-- Para solo filtrar el elemento DomainName del json del comando anterior se puede emplear la herramienta jq de la siguiente forma:
aws apigatewayv2 get-domain-names| jq '.Items[].DomainName'
-- ver el contenido de la política
aws iam get-policy-version --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA --version-id v2 --query 'PolicyVersion.Document' --output json
-- ver la versión de la política contenido de una política
aws iam get-policy --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA --query 'Policy.DefaultVersionId' --output text
-- que políticas están vinculadas al usuario
aws iam list-user-policies --user-name mi-usuario-aws
-- que políticas in line están vinculadas al usuario
aws iam list-attached-user-policies --user-name mi-usuario-aws
-- crear una nueva versión de la política, actualizar la política y ponerla como default
aws iam create-policy-version --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA --policy-document file://habilitar-mfa.json --set-as-default
-- Traer la versión específica de la política aws iam get-policy-version --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA --version-id v1 --query 'PolicyVersion.Document' --output json
-- Como listar los roles de una cuenta y listarlos por su nombre
aws iam list-roles --query 'Roles[].RoleName'
-- Como listar los roles de una cuenta y listarlos por su nombre, filtrar con grep las coincidencias por ejemplo con tools
aws iam list-roles --query 'Roles[].RoleName'|grep -i tools
-- Listar que que SCP existen
aws organizations list-policies --filter SERVICE_CONTROL_POLICY --max-items 25
Es posible cambiar el número de elementos en el ejemplo se usaron 25
-- Encontrar que políticas SCP aplican para una cuenta en particular -- El primer paso es listar todas las cuentas en la organización
aws organizations list-accounts
-- Busca la cuenta de la cuál quieras saber sus datos y anota su id, con el id ahora buscaremos a que OU o unidad organizational pertenece, por ejemplo el id en este caso es: 123456789012
aws organizations list-parents --child-id 123456789012
-- Nuevamente anotar el id que aparece de la OU por ejemplo en este caso ou-klbr-srebil0k y ejecutar el siguiente comando
aws organizations list-policies-for-target --target-id ou-klbr-srebil0k --filter SERVICE_CONTROL_POLICY
Si existen políticas aplicadas para esta OU se mostraran a continuación.
-- También es posible que la política esté aplicada directamente para una cuanta en particular, para este caso ejecutar el comando:
aws organizations list-policies-for-target --target-id 123456789012 --filter SERVICE_CONTROL_POLICY
-- Listar todos los nombres de las cuentas que existen en la organización y solo mostrar el ID y el nombre en la misma línea
aws organizations list-accounts |jq -r '.Accounts[] | "\(.Id) - \(.Name)"'
Es posible agregarle el parámetro --profile account-master es para usar las credenciales de la cuenta master o principal.
-- Crear un dispositivo MFA
aws iam create-virtual-mfa-device --virtual-mfa-device-name mi-dispositivo-MFA --bootstrap-method QRCodePNG --outfile CodigoQR.png { "VirtualMFADevice": { "SerialNumber": "arn:aws:iam::123456789012:mfa/mi-dispositivo-MFA" } }
-- Habilitar un dispositivo MFA
aws iam enable-mfa-device --user-name mi-dispositivo-MFA --serial-number arn:aws:iam::123456789012:mfa/mi-dispositivo-MFA --authentication-code-1 866541 --authentication-code-2 987645
-- Vincular el dispositivo con el usuario
aws iam attach-user-policy --user-name mi-usuario-AWS --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA
-- Crear el archivo de política con tu editor favorito
vi habilitar-mfa.json
{ "Policy": { "PolicyName": "AllowCreateEnableMFA", "PolicyId": "ABCDEFGHI5LUISN74EMXX", "Arn": "arn:aws:iam::123456789012:policy/AllowCreateEnableMFA", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2023-04-21T23:40:35+00:00", "UpdateDate": "2023-04-21T23:40:35+00:00" } }
-- Crear la política con el archivo recién creado
aws iam create-policy --policy-name AllowCreateEnableMFA --policy-document file://habilitar-mfa.json
-- Listar todas las cuentas AWS en la organización
aws organizations list-accounts
La salida es algo similar a esto:
{ "Accounts": [ { "Id": "111111111111", "Arn": "arn:aws:organizations::999999999999:account/o-3x69pob97t/111111111111", "Email": "aws-tools@kolibers.com", "Name": "tools", "Status": "ACTIVE", "JoinedMethod": "CREATED", "JoinedTimestamp": "2020-05-27T13:36:19.045000-06:00" }, { "Id": "222222222222", "Arn": "arn:aws:organizations::999999999999:account/o-3x69pob97t/222222222222", "Email": "aws-onekolibers-nonprod@kolibers.com", "Name": "onekolibers-nonprod", "Status": "ACTIVE", "JoinedMethod": "CREATED", "JoinedTimestamp": "2023-01-28T15:40:25.079000-06:00" }, { "Id": "333333333333", "Arn": "arn:aws:organizations::999999999999:account/o-3x69pob97t/333333333333", "Email": "aws-integrations-prod@kolibers.com", "Name": "integrations-prod", "Status": "ACTIVE", "JoinedMethod": "CREATED", "JoinedTimestamp": "2022-01-25T10:38:07.487000-06:00" }, { "Id": "444444444444", "Arn": "arn:aws:organizations::999999999999:account/o-3x69pob97t/444444444444", "Email": "aws-security@kolibers.com", "Name": "security", "Status": "ACTIVE", "JoinedMethod": "CREATED", "JoinedTimestamp": "2022-04-27T13:40:07.647000-06:00" } ] }
-- Para listar solo los números de cuenta, para este ejemplo usamos jq una utilería para trabajar con archivos json.
aws organizations list-accounts |jq -r '.Accounts[] | .Id'
-- Listar todas las cuentas en la organización y si nombre amigable a un lado, para este ejemplo usamos jq una utilería para trabajar con archivos json, el parámetro --profile cuenta-master es opcional será de acuerdo a tu archivo de configuración.
aws organizations list-accounts --profile cuenta-master |jq -r '.Accounts[] | "\(.Id) - \(.Name)"'
Ahora la salida es algo similar a esto:
111111111111 - tools 222222222222 - onekolibers-nonprod 333333333333 - integrations-prod 444444444444 - security
El resultado se puede pegar en un archivo de texto para futura referencia o se puede guardar en un archivo de texto desde la misma línea de comandos como se ve a continuación (el parámetro --profile cuenta-master es opcional será de acuerdo a tu archivo de configuración.) :
aws organizations list-accounts --profile cuenta-master |jq -r '.Accounts[] | "\(.Id) - \(.Name)"' > cuentas.txt
-- Como obtener los contactos alternativos de una cuenta en la organización
aws account get-alternate-contact --alternate-contact-type=SECURITY --account-id 123456789012
Se obtendrá una salida como la siguiente:
{ "AlternateContact": { "AlternateContactType": "SECURITY", "EmailAddress": "lmoreno@kolibers.com", "Name": "Luis Moreno", "PhoneNumber": "+525558765432", "Title": "Cloud Security Architect" } }
-- Cómo cambiar los contactos alternativos de AWS desde la línea de comandos, si el comando funciona bien, no produce ninguna salida.
aws account put-alternate-contact \ --account-id $word \ --alternate-contact-type=SECURITY \ --email-address=lmoreno@kolibers.com \ --name="Luis Moreno" \ --phone-number="+525566778899" \ --title="Cloud Security Architect"
-- Cómo cambiar los contactos administrativos para toda la organización, primero deberás obtener una lista de todas las cuentas con uno de los comandos que están arriba y luego emplear un poco de Linux command Fu como se muestra a continuación. Para confirmar los cambios ejecutar el comando anterior en alguna de las cuentas.
for cuentas in `cat accounts-numbers.txt`; do aws account put-alternate-contact \ --account-id $cuentas \ --alternate-contact-type=SECURITY \ --email-address=lmoreno@kolibers.com \ --name="Luis Moreno" \ --phone-number="+525566778899" \ --title="Cloud Security Architect" \ ; done;
-- Listar los access keys de un usuario (la opción --profile miperfil es opcional)
aws iam list-access-keys --user-name luismoreno --profile mi-perfil
-- eliminar un access key (la opción --profile miperfil es opcional)
aws iam delete-access-key --user-name luismoreno --access-key-id AKIA36UO4MZQN5MKFASR --profile mi-perfil
-- listar las políticas del usuario (la opción --profile miperfil es opcional)
aws iam list-attached-user-policies --user-name luismoreno --profile miperfil
-- Eliminar la política (la opción --profile miperfil es opcional)
aws iam detach-user-policy --user-name luismoreno --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess --profile mi-perfil
-- Listar a que grupos pertenece el usuario (la opción --profile miperfil es opcional)
aws iam list-groups-for-user --user-name luismoreno --profile miperfil
-- Listar las políticas in-line (la opción --profile miperfil es opcional)
aws iam list-user-policies --user-name luismoreno --profile miperfil
-- Quitar la política in-line (la opción --profile miperfil es opcional)
aws iam delete-user-policy --user-name luismoreno --policy-name mi-política --profile miperfil
-- Eliminar usuario, antes de poder eliminar el usuario se deben eliminar las llaves, políticas, políticas in-line, como se detalla en los comandos anteriores
aws iam delete-user --user-name lmorenodiagrams --profile palig-datacore-prod