Remarques :

Suppression d'utilisateurs inactifs des domaines d'identité OCI IAM basés sur UserStatus et LastSuccessfulLoginDate à l'aide de Python

Introduction

Oracle Cloud Infrastructure (OCI) est une plate-forme cloud capable de fournir une gamme de services cloud, y compris le stockage, le réseau et l'infrastructure. Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) est un service qui vous permet de gérer l'accès aux ressources OCI. Il fournit une authentification et une autorisation pour les utilisateurs et les groupes.

La suppression des utilisateurs inactifs en fonction de leur dernière date de connexion réussie dans les domaines d'identité OCI IAM peut s'avérer particulièrement utile dans le contexte du modèle de tarification par utilisateur d'OCI pour plusieurs raisons :

Pour implémenter ce processus efficacement, sous le fragment de code python peut être utilisé pour automatiser l'identification et la suppression des utilisateurs inactifs en fonction de leur dernière date de connexion réussie et de leur statut actif/inactif. En exécutant régulièrement de tels scripts, vous pouvez maintenir un environnement IAM allégé et sécurisé tout en optimisant vos coûts dans OCI.

Public visé

Professionnels et administrateurs IAM.

Objectif

Supprimez des utilisateurs en fonction du statut utilisateur et de lastSuccessfulLoginDate des domaines d'identité OCI IAM à l'aide de l'API REST avec Python.

Prérequis

Tâche 1 : créer une application confidentielle dans les domaines d'identité OCI IAM

Suivez Oracle Identity Cloud Service : premier appel d'API REST pour créer une application confidentielle et extraire l'ID client et la clé secrète client, qui peuvent ensuite être utilisés pour effectuer un appel d'API REST vers OCI IAM afin d'extraire le jeton d'accès et les adresses d'API suivantes.

Tâche 2 : configurer le fichier config.json

Configurez le fichier de configuration sur l'ordinateur local. Le fichier config.json contient des informations sur l'URL du domaine d'identité, l'ID client et la clé secrète client utilisés pour générer le jeton d'accès.

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

Tâche 3 : obtenir le jeton d'accès

Une fois le fichier config.json en place, vous devez d'abord générer le jeton d'accès, qui peut être utilisé pour effectuer d'autres appels d'API REST vers les adresses OCI IAM.

Dans le fragment de code ci-dessous, la fonction get_encoded prend l'ID client et la clé secrète client en tant qu'arguments et renvoie la chaîne base64-encoded. Cette chaîne encodée est également transmise en tant qu'argument à la fonction get_access_token en tant qu'en-tête d'autorisation afin d'obtenir le jeton d'accès en exécutant une demande 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

Tâche 4 : gérer un lot d'informations utilisateur (lastSuccessfulLoginDate, userStatus) pour nettoyer les utilisateurs

Nous disposons du jeton d'accès à l'aide duquel nous pouvons effectuer d'autres appels d'API REST vers différentes adresses REST de domaines d'identité OCI IAM. Le fragment de code ci-dessous montre comment nous effectuons une demande GET avec les en-têtes et paramètres nécessaires vers l'adresse /admin/v1/Users, afin d'extraire le nombre total d'utilisateurs, puis de calculer le nombre d'itérations nécessaires, en fonction du nombre total de résultats et du nombre par demande.

Tâche 5 : utiliser le script dans OCI Cloud Shell

Une fois le script prêt, il peut être facilement exécuté sur la machine locale (avec Python installé) ou sur n'importe quel IDE prenant en charge le développement Python. Nous utilisons OCI Cloud Shell pour exécuter le script et obtenir le rapport souhaité.

  1. Connectez-vous à la console OCI, ouvrez Cloud Shell dans l'angle supérieur droit de l'écran, puis téléchargez le script Python et le fichier config.json.

    Image  1

    Image  2

    Image  3

  2. Exécutez python DeleteUser_PriorCheck_InactivePeriod60days_IsAdmin.py.

    Remarque : DeleteUser_PriorCheck_InactivePeriod60days_IsAdmin.py est le script Python développé à l'aide des fragments de code ci-dessus.

Remerciements

Ressources de formation supplémentaires

Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.