Replicar asignaciones de roles predefinidos de un entorno a otro

Utilice los scripts de esta sección para clonar asignaciones de roles predefinidos de un entorno a otro El usuario que ejecute estos scripts debe tener un rol de Administrador del servicio en ambos entornos.

Nota:

Si utiliza la versión en PDF de este documento: para evitar saltos de líneas e información de pie de página que inutilizarán estos scripts, cópielos de la Versión HTML de este tema.

Windows

  1. Cree replicatepredefineroles.ps1 copiando el siguiente script.
    # Replicate predefined roles script
    
    param(
      [string]$epmusersource,
      [string]$epmpwdsource,
      [string]$epmurlsource,
      [string]$epmidentitydomainsource,
      [string]$epmusertarget,
      [string]$epmpwdtarget,
      [string]$epmurltarget,
      [string]$epmidentitydomaintarget,
      [string]$proxyserverusername,
      [string]$proxyserverpassword,
      [string]$proxyserverdomain,
      [string]$emailtoaddress
    )
    
    $roleassignmentreport="roleassignmentreport.csv"
    
    function replicateroles
    {
        # epmautomate login Source App as an IDM Admin
        echo "Logging into source application at ${epmurlsource}"
        epmautomate login ${epmusersource} ${epmpwdsource} ${epmurlsource} ${epmidentitydomainsource} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
        echo "Creating role assignment report: ${roleassignmentreport}"
        epmautomate roleAssignmentReport ${roleassignmentreport}
        if (${emailtoaddress} -match "@") {
            epmautomate.bat sendMail $emailtoaddress "Role assignment report" Body="Role assignment report is attached." Attachments=$roleassignmentreport
        }
        echo "Downloading role assignment report"
        epmautomate downloadfile ${roleassignmentreport}
        epmautomate deletefile ${roleassignmentreport}
        epmautomate logout
    
        echo "Creating files to use with epmautomate assignRoles"
    
        Get-Content ${roleassignmentreport} | ForEach-Object {
            $user=$_.split(',')[0]
            $rolename=$_.split(',')[4]
    
            if ($rolename -like '*User' -And $rolename -notlike '*Power User') {
                $rolenamearray=$rolename.split(" ")
                $arraysize=$rolenamearray.count
                $rolename="User"
                if ($arraysize.count -le 2) {
                    echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv" 
                }
            }
            elseif ($rolename -like '*Viewer') {
                $rolenamearray=$rolename.split(" ")
                $arraysize=$rolenamearray.count
                $rolename="Viewer"
                if ($arraysize -le 2) {
                    echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv" 
                }
            }
            elseif ($rolename -like '*Power User') {
                $rolenamearray=$rolename.split(" ")
                $arraysize=$rolenamearray.count
                $rolename="Power User"
                if ($arraysize -le 3) {
                    echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv" 
                }
            }
            elseif ($rolename -like '*Service Administrator') {
                $rolenamearray=$rolename.split(" ")
                $arraysize=$rolenamearray.count
                $rolename="Service Administrator"
                if ($arraysize -le 3) {
                    echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv" 
                }
            }
            elseif ($rolename -like 'Planner') {
                echo "${user}" | Out-File -Append -Encoding "UTF8" "role-User.csv" 
            }
        }
    
        # Add header and format
        $rolefiles = Get-ChildItem "role-*.csv"
        foreach ($rolefile in $rolefiles) {
            $rolefilecontent = Get-Content "$rolefile" 
            $headerline='User Login'
            Set-Content $rolefile -value $headerline,$rolefilecontent
            $txt = [io.file]::ReadAllText("$rolefile") -replace "`r`n","`n"
            [io.file]::WriteAllText("$rolefile", $txt)
        }
    
        # epmautomate login Target App as an IDM Admin
        echo "Logging into target application at ${epmurltarget}"
        epmautomate login ${epmusertarget} ${epmpwdtarget} ${epmurltarget} ${epmidentitydomaintarget} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
    
        $rolefiles = Get-ChildItem "role-*.csv"
        foreach ($rolefile in $rolefiles) {
            $rolenamecsv=$rolefile.BaseName.split('-')[1]
            $rolename=$rolenamecsv.split('.')[0]
            epmautomate deletefile "${rolefile}" | Out-Null
            echo "Uploading file ${rolefile}"
            epmautomate uploadfile "${rolefile}"
            echo "Assigning ${rolename} roles"
            epmautomate assignRole "role-${rolename}.csv" "${rolename}"
            epmautomate deletefile "role-${rolename}.csv"
        }
        epmautomate logout
        rm deletefile*.log | Out-Null
    }
    
    function init
    {
        # delete ${role}.csv files
        $rolefiles = Get-ChildItem "role-*.csv"
        foreach ($rolefile in $rolefiles) {
            $rolefileexists=Test-Path $rolefile
            if ($rolefileexists) {
                rm "${rolefile}"
            }
        }
    }
    
    echo "Replicate predefined roles script started"
    init
    replicateroles
    echo "Replicate predefined roles script completed"
    
  2. Cree replicatepredefineroles.bat copiando el siguiente script.
    @ECHO OFF
    SET thisdir=%~dp0
    SET scriptpath=%thisdir%replicatepredefinedroles.ps1
    
    REM USER DEFINED VARIABLES
    REM -----------------------
    set epmusersource="<EPM USER FOR SOURCE ENVIRONMENT>"
    set epmpwdsource="<EPM PASSWORD FOR SOURCE ENVIRONMENT>"
    set epmurlsource="<EPM URL FOR SOURCE ENVIRONMENT>"
    set epmidentitydomainsource="<EPM IDENTITY DOMAIN FOR SOURCE ENVIRONMENT>"
    set epmusertarget="<EPM USER FOR TARGET ENVIRONMENT>"
    set epmpwdtarget="<EPM PASSWORD FOR TARGET ENVIRONMENT>"
    set epmurltarget="<EPM URL FOR TARGET ENVIRONMENT>"
    set epmidentitydomaintarget="<EPM IDENTITY DOMAIN FOR TARGET ENVIRONMENT>"
    set proxyserverusername="<PROXY SERVER USER NAME>"
    set proxyserverpassword="<PROXY SERVER PASSWORD>"
    set proxyserverdomain="<PROXY SERVER DOMAIN>"
    set emailtoaddress="<EMAIL_TO_ADDRESS>"
    REM -----------------------
    
    PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%scriptpath%' -epmusersource '%epmusersource%' -epmpwdsource '%epmpwdsource%' -epmurlsource '%epmurlsource%' -epmidentitydomainsource '%epmidentitydomainsource%' -epmusertarget '%epmusertarget%' -epmpwdtarget '%epmpwdtarget%' -epmurltarget '%epmurltarget%' -epmidentitydomaintarget '%epmidentitydomaintarget%' -proxyserverusername '%proxyserverusername%' -proxyserverpassword '%proxyserverpassword%' -proxyserverdomain '%proxyserverdomain%' -emailtoaddress '%emailtoaddress%'"
  3. Actualice replicatepredefineroles.bat según proceda. Consulte la siguiente tabla para obtener información sobre los valores que debe establecer para las propiedades de este archivo.

    Actualización de replicatepredefineroles.bat

    Parámetro Descripción
    epmusersource El nombre de usuario de un usuario con roles de Administrador de dominio de identidad y Administrador del servicio en el entorno de origen.

    Ejemplos:

    Windows: set epmusersource="jDoe"

    Linux/UNIX: epmusersource="jDoe"

    epmpwdsource Contraseña del usuario o la ruta absoluta del archivo de contraseñas cifradas.

    Ejemplos:

    Windows: set epmpwdsource="Example"

    Linux/UNIX: epmpwdsource="Example"

    epmurlsource URL del entorno del que se van a copiar los usuarios.

    Ejemplos:

    Windows: set epmurlsource="https://example.oraclecloud.com"

    Linux/UNIX: epmurlsource="https://example.oraclecloud.com"

    epmidentitydomainsource Nombre del dominio de identidad que usa el entorno de origen.

    Ejemplos:

    Windows: set epmidentitydomainsource="example_source_dom"

    Linux/UNIX: epmidentitydomainsource="example_source_dom"

    epmusertarget El nombre de un usuario con roles de Administrador de dominio de identidad y Administrador del servicio en el entorno de destino.

    Ejemplos:

    Windows: set epmusertarget="John.Doe"

    Linux/UNIX: set epmusertarget="John.Doe"

    epmpwdtarget Contraseña del usuario o la ruta absoluta del archivo de contraseñas cifradas.

    Ejemplos:

    Windows: set epmpwdtarget="Example1"

    Linux/UNIX: epmpwdtarget="Example1"

    epmurltarget URL del entorno en el que se van a crear los usuarios.

    Ejemplos:

    Windows: set epmurltarget="https://example.oraclecloud.com"

    Linux/UNIX: epmurltarget="https://example.oraclecloud.com"

    epmidentitydomaintarget Nombre del dominio de identidad que usa el entorno de destino.

    Ejemplos:

    Windows: set epmidentitydomaintarget="example_target_dom"

    Linux/UNIX: epmidentitydomaintarget="example_target_dom"

    proxyserverusername Nombre de usuario utilizado para autentificar una sesión segura con el servidor proxy que controla el acceso a Internet. Borre todas las apariciones de esta propiedad si no se utiliza.

    Ejemplos:

    Windows: set proxyserverusername="Example"

    Linux/UNIX: proxyserverusername="Example"

    proxyserverpassword Contraseña para autentificar el usuario con el servidor proxy. Borre todas las apariciones de esta propiedad si no se utiliza.

    Ejemplos:

    Windows: set proxyserverpassword="examplePwd"

    Linux/UNIX: proxyserverpassword="examplePwd"

    proxyserverdomain Nombre del dominio definido para el servidor proxy. Borre todas las apariciones de esta propiedad si no se utiliza.

    Ejemplos:

    Windows: set proxyserverdomain="exampleDom"

    Linux/UNIX: proxyserverdomain="exampleDom"

    emailtoaddress Opcionalmente, dirección de correo electrónico a la que se va a enviar el informe de asignación de roles. El informe se envía por correo electrónico solo si se especifica este valor.

    Ejemplo: emailtoaddress=john.doe@example.com

Linux/UNIX

  1. Cree replicatepredefineroles.sh copiando el siguiente script.
    #!/bin/sh
    
    # USER DEFINED VARIABLES
    #-----------------------
    javahome="<JAVA HOME>"
    epmautomatescript="<EPM AUTOMATE SCRIPT LOCATION>"
    epmusersource="<EPM USER FOR SOURCE ENVIRONMENT>"
    epmpwdsource="<EPM PASSWORD FOR SOURCE ENVIRONMENT>"
    epmurlsource="<EPM URL FOR SOURCE ENVIRONMENT>"
    epmidentitydomainsource="<EPM IDENTITY DOMAIN FOR SOURCE ENVIRONMENT>"
    epmusertarget="<EPM USER FOR TARGET ENVIRONMENT>"
    epmpwdtarget="<EPM PASSWORD FOR TARGET ENVIRONMENT>"
    epmurltarget="<EPM URL FOR TARGET ENVIRONMENT>"
    epmidentitydomaintarget="<EPM IDENTITY DOMAIN FOR TARGET ENVIRONMENT>"
    proxyserverusername="<PROXY SERVER USER NAME>"
    proxyserverpassword="<PROXY SERVER PASSWORD>"
    proxyserverdomain="<PROXY SERVER DOMAIN>"
    emailtoaddress="<EMAIL TO ADDRESS>"
    #-----------------------
    
    roleassignmentreport="roleassignmentreport.csv"
    
    export JAVA_HOME=${javahome}
    
    
    replicateroles()
    {
        # epmautomate login Source App as an DM Admin
        echo "Logging into source application at ${epmurlsource}"
        ${epmautomatescript} login ${epmusersource} ${epmpwdsource} ${epmurlsource} ${epmidentitydomainsource} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
        echo "Creating role assignment report: ${roleassignmentreport}"
        ${epmautomatescript} roleAssignmentReport ${roleassignmentreport}
        if [[ "${emailtoaddress}" == *"@"* ]]
        then
            ${epmautomatescript} sendMail $emailtoaddress "Role assignment report" Body="Role assignment report is attached." Attachments=$roleassignmentreport
        fi
        echo "Downloading role assignment report"
        ${epmautomatescript} downloadfile ${roleassignmentreport}
        ${epmautomatescript} deletefile ${roleassignmentreport}
        ${epmautomatescript} logout
    
        echo "Creating files to use with epmautomate assignRoles"
        while read line
        do
            user=$(echo "${line}" | cut -d',' -f1)
            rolename=$(echo "${line}" | cut -d',' -f5)
    
            if [[ "$rolename" == *"User" ]] && [[ "$rolename" != "*Power User" ]]
            then
                count=$(echo "${rolename}" | wc -w);
                rolename="User"
                if [[ $count -le 2 ]]
                then
                    echo "${user}" >> "role-${rolename}.csv" 
                fi
            elif [[ "$rolename" == *"Viewer" ]] 
            then
                count=$(echo "${rolename}" | wc -w);
                rolename="Viewer"
                if [[ $count -le 2 ]]
                then
                    echo "${user}" >> "role-${rolename}.csv" 
                fi
            elif [[ "$rolename" == *"Power User" ]] 
            then
                count=$(echo "${rolename}" | wc -w);
                rolename="Power User"
                if [[ $count -le 3 ]]
                then
                    echo "${user}" >> "role-${rolename}.csv" 
                fi
            elif [[ "$rolename" == *"Service Administrator" ]] 
            then
                count=$(echo "${rolename}" | wc -w);
                rolename="Service Administrator"
                if [[ $count -le 3 ]]
                then
                    echo "${user}" >> "role-${rolename}.csv" 
                fi
            elif [[ "$rolename" == "Planner" ]] 
            then
                    echo "${user}" >> "role-User.csv" 
            fi
        done < ${roleassignmentreport}
    
        # write header line
        for f in role-*.csv
        do
            sed -i '1iUser Login' "$f"
        done
    
        # epmautomate login Target App as an IDM Admin
        echo "Logging into target application at ${epmurltarget}"
        ${epmautomatescript} login ${epmusertarget} ${epmpwdtarget} ${epmurltarget} ${epmidentitydomaintarget} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
    
        for rolefile in role-*.csv
        do
            rolenamecsv=$(echo "$rolefile" | cut -d'-' -f2)
            rolename=$(echo "$rolenamecsv" | cut -d'.' -f1)
            ${epmautomatescript} deletefile "${rolefile}" > /dev/null 2>&1
            echo "Uploading file ${rolefile}"
            ${epmautomatescript} uploadfile "${rolefile}"
            echo "Assigning roles"
            ${epmautomatescript} assignrole "${rolefile}" "${rolename}"
            ${epmautomatescript} deletefile "${rolefile}"
        done
    
        ${epmautomatescript} logout
        rm deletefile*.log > /dev/null 2>&1
    }
    
    init()
    {
        # delete role-${role}.csv files
        for f in role-*.csv
        do
            rm "$f" > /dev/null 2>&1
        done
    }
    
    echo "Replicate predefined roles script started"
    init
    replicateroles
    echo "Replicate predefined roles script completed"
    
  2. Actualice replicatepredefineroles.sh. Consulte la tabla anterior para obtener información sobre los valores que debe especificar. Además, debe especificar los valores de estas propiedades:
    • javahome: la ruta absoluta al directorio donde está instalado Java.
    • epmautomatescript: ubicación de epmautomatescript.sh, por ejemplo, epmautomatescript="/home/user1/epmautomate/bin/epmautomate.sh"