EventBridge 및 Lambda에 대한 액세스 키 프로그래밍

9968 단어 aws
Cuando estamos desarrollando casi siempre usamos nuestras Access Keys para utilizar los servicios de AWS, la recomendación es siempre utilizarlas en un equipment seguro, sin embargo hay ocasiones en las que debemos compartir equipment se nos olvida eliminar las Access Key para que la persona que use el equipment no vaya a utilizarlas. Con el fin de tener un control adicional, en este post vamos a crear una regla en EventBridge para que llame una función Lambda y borre las Access Keys cada cierto tiempo.

유틸리티 서비스:

*나는
*람다
*이벤트브릿지

Para comenzar vamos a crear algunos usuarios de prueba utilizando la CLI. Vamos a adicionarles un path para poder diferenciarlos y no borrar las Access Keys de los usuarios que tengamos en nuestra cuenta.

aws iam create-user \
--path "/blogtest/" \
--user-name "blogtest1"

aws iam create-access-key --user-name blogtest1

aws iam create-user \
--path "/blogtest/" \
--user-name "blogtest2"

aws iam create-access-key --user-name blogtest2

aws iam create-user \
--path "/otro/" \
--user-name "blogtest3"

aws iam create-access-key --user-name blogtest3


액세스 키를 사용하지 않으려면 액세스 키를 사용하지 않고 액세스 키를 제거해야 합니다.

Vamos a la pantalla principal de Lambda y damos click en Create function

Create Function

Con nuestra función creada vamos a copiar el siguiente código y damos click en el botón Deploy:

import json
import boto3

client = boto3.client('iam')


def getUsers(path):
    users =[]
    for user in client.list_users(PathPrefix = path)["Users"]:
        users.append(user["UserName"])

    return users

def deleteAccessKeys(user):
    for key in client.list_access_keys(UserName = user)["AccessKeyMetadata"]:
        client.delete_access_key(UserName=user,AccessKeyId=key["AccessKeyId"])


def lambda_handler(event, context):
   for user in getUsers("/blogtest/"):
       deleteAccessKeys(user)


Al método getUsers le estamos enviando como parámetro/blogtest/que es el path con el cual se crearon nuestros usuarios. El path únicamente se puede definir desde la _CLI o el SDK por lo que todos los usuarios que creamos por la consola quedan con el path/. Si queremos que se borren las Access Key de todos los usuarios debemos pasar al método getUsers el valor/.

Como ya sabemos es necesario agregar los políticas necesarias al rol de la función Lambda para que se pueda ejecutar. Para este vamos a Configuration-Permissions y damos click en el nombre del rol.

Modify Rol

Damos click en 인라인 정책 만들기

Modify Rol

En la pestaña JSON agregamos la siguiente política y damos click en el botón 검토 정책:

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


Modify Rol

Le damos un nombre (access_keey_users) y damos click en el botón Create policy.

Modify Rol

Hasta el momento creamos la función Lambda y le dimos permisos para eliminar las llaves de los usuarios que tengan un path especifico.

El siguiente paso es crear una regla en EventBridge para que nuestra función se ejecute cada cierto periodo de tiempo.

Vamos al buscador de servicios y colocamos EventBridge. Ya en la pantalla principal damos click en 규칙 만들기

Modify Rol

Debemos definir el nombre de la regla y su tipo, para este caso definimos una regla de tipo Schedule (se ejecuta periódicamente)

Define Rule

Definimos la periodicidad con la cual queremos que se ejecute la función Lambda, para efectos de prueba, la vamos a dejar en 5 minutos.

Periodicidad

Debemos seleccionar la función Lambda que creamos y damos click en Next.

Select Target

En la sección Tags la dejamos vació y da click en Next.

Tag

구성 수정 및 수정을 클릭하여 규칙 만들기를 클릭하세요.

Create Rule Final

Create Rule Final

Después de unos minutos podemos dar click en el nombre de la regla e ir a la pestaña Monitoring para ver como ha sido su ejecución.

Monitoring Rule

Los invito a comprobar que las Access Key fueron borradas ingresando a IAM-Users-Seleccionar el usuario blogtest1 e ir a la pestaña Security Credentials y modificar el código para que se borren las Access Key del usuario blogtest3

Me pueden encontrar en:

참조



IAM Path

IAM Boto3

좋은 웹페이지 즐겨찾기