Note:

Supresión de usuarios inactivos de dominios de identidad de OCI IAM según UserStatus y LastSuccessfulLoginDate mediante Python

Introducción

Oracle Cloud Infrastructure (OCI) es una plataforma en la nube capaz de proporcionar una gama de servicios en la nube que incluyen almacenamiento, redes e infraestructura. Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) es un servicio que permite gestionar el acceso a los recursos de OCI. Proporciona autenticación y autorización para usuarios y grupos.

La supresión de usuarios inactivos en función de su última fecha de conexión correcta en los dominios de identidad de OCI IAM puede resultar especialmente útil en el contexto del modelo de precios por usuario de OCI por varios motivos:

Para implementar este proceso de manera efectiva, debajo del fragmento de python se puede usar para automatizar la identificación y supresión de usuarios inactivos en función de su última fecha de inicio de sesión correcta y su estado activo/inactivo. Al ejecutar estos scripts con regularidad, puedes mantener un entorno de IAM seguro y eficiente a la vez que optimizas tus costos en OCI.

Público Objetivo

Profesionales y administradores de IAM.

Objetivo

Suprima usuarios según el estado del usuario y lastSuccessfulLoginDate de los dominios de identidad de OCI IAM mediante la API de REST con Python.

Requisitos

Tarea 1: Creación de una aplicación confidencial en dominios de identidad de OCI IAM

Siga Oracle Identity Cloud Service: primera llamada de API de REST para crear una aplicación confidencial y recuperar el ID de cliente y el secreto de cliente, que se pueden utilizar para realizar una llamada de API de REST a OCI IAM para recuperar el token de acceso y los puntos finales de API posteriores.

Tarea 2: Configurar el archivo config.json

Configure el archivo de configuración en la máquina local. El archivo config.json tiene información sobre la URL del dominio de identidad, el ID de cliente y el secreto de cliente que se utiliza para generar el token de acceso.

{
"iamurl"         : "https://idcs-###########.identity.oraclecloud.com",
"client_id"      : "#######################",
"client_secret"  : "#######################"
}

Tarea 3: Obtener el token de acceso

Una vez que el archivo config.json esté en su lugar, lo primero que debe hacer es generar el token de acceso, que se puede utilizar para realizar más llamadas de API de REST a los puntos finales de OCI IAM.

En el siguiente fragmento de código, la función get_encoded toma el ID de cliente y el secreto de cliente como argumentos y devuelve la cadena base64-encoded. Esta cadena codificada se transfiere como argumento a la función get_access_token como cabecera de autorización para obtener el token de acceso mediante una solicitud POST.

#get base64 encoded
def get_encoded(self,clid, clsecret):
    encoded = clid + ":" + clsecret
    baseencoded = base64.urlsafe_b64encode(encoded.encode('UTF-8')).decode('ascii')
    return baseencoded

#get access token
def get_access_token(self,url, header):
    para = "grant_type=client_credentials&scope=urn:opc:idm:__myscopes__"
    response = requests.post(url, headers=header, data=para, verify=False)
    jsonresp = json.loads(response.content)
    access_token = jsonresp.get('access_token')
    return access_token

#print access token
def printaccesstoken(self):
    obj = IAM()
    encodedtoken = obj.get_encoded(clientID, clientSecret)
    extra = "/oauth2/v1/token"
    headers = {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
               'Authorization': 'Basic %s' % encodedtoken, 'Accept': '*/*'}
    accesstoken = obj.get_access_token(idcsURL + extra, headers)
    return accesstoken

Tarea 4: Manejar un lote de información de usuario (lastSuccessfulLoginDate, userStatus) para limpiar usuarios

Tenemos el token de acceso, mediante el cual podemos realizar más llamadas de API de REST a diferentes puntos finales de REST de dominios de identidad de OCI IAM. El fragmento de código siguiente muestra cómo estamos realizando una solicitud GET con las cabeceras y los parámetros necesarios en el punto final /admin/v1/Users, para recuperar el número total de usuarios y, a continuación, calcular el número de iteraciones necesarias, según el número total de resultados y el recuento por solicitud.

Tarea 5: Uso del script en OCI Cloud Shell

Una vez que el script está listo, se puede ejecutar fácilmente en la máquina local (con Python instalado) o en cualquier IDE que soporte el desarrollo de Python. Estamos utilizando OCI Cloud Shell para ejecutar el script y obtener el informe deseado.

  1. Conéctese a la consola de OCI, abra Cloud Shell desde la esquina superior derecha de la pantalla y, a continuación, cargue el script de Python y el archivo config.json.

    Imagen 1

    Imagen 2

    Imagen 3

  2. Ejecute python DeleteUser_PriorCheck_InactivePeriod60days_IsAdmin.py.

    Nota: DeleteUser_PriorCheck_InactivePeriod60days_IsAdmin.py es el script de Python desarrollado mediante fragmentos de código anteriores.

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.