Replica delle assegnazioni dei ruoli predefiniti da un ambiente a un altro

Utilizzare gli script descritti in questa sezione per clonare le assegnazioni dei ruoli predefiniti da un ambiente a un altro. L'utente che esegue questi script deve disporre del ruolo Amministratore servizi in entrambi gli ambienti.

Nota:

In caso di utilizzo della versione in formato PDF di questo documento: per evitare le interruzioni di riga e le informazioni dei piè di pagina che renderebbero inutilizzabili questi script, copiare gli script dalla Versione HTML di questo argomento.

Windows

  • Creare replicatepredefineroles.ps1 copiando lo script riportato di seguito.
    # Replicate predefined roles script
    
    param(
      [string]$epmusersource,
      [string]$epmpwdsource,
      [string]$epmurlsource,
      [string]$epmusertarget,
      [string]$epmpwdtarget,
      [string]$epmurltarget,
      [string]$proxyserverusername,
      [string]$proxyserverpassword,
      [string]$proxyserverdomain
    )
    
    $roleassignmentreport="roleassignmentreport.csv"
    
    function replicateroles
    {
        # Log into source environment
        echo "Logging into the source environment ${epmurlsource}"
        epmautomate login ${epmusersource} ${epmpwdsource} ${epmurlsource} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
        echo "Creating Role Assignment Report: ${roleassignmentreport}"
        epmautomate roleAssignmentReport ${roleassignmentreport}
        echo "Downloading role assignment report"
        epmautomate downloadfile ${roleassignmentreport}
        epmautomate deletefile ${roleassignmentreport}
        epmautomate logout
    
        echo "Creating files to replicate role assignments"
    
        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)
        }
    
        # Log into target environment 
        echo "Logging into target environment ${epmurltarget}"
        epmautomate login ${epmusertarget} ${epmpwdtarget} ${epmurltarget} ${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 "Replicaton of predefined role assignments started"
    init
    replicateroles
    echo "Replicate predefined roles script completed"
    
  • Creare replicatepredefineroles.bat copiando lo script riportato di seguito.
    @ECHO OFF
    SET thisdir=%~dp0
    SET scriptpath=%thisdir%replicatepredefinedroles.ps1
    
    REM --- USER DEFINED VARIABLES
    REM --- CONNECTION INFORMATION: SOURCE SERVICE --------
    set epmusersource="example_IDM_Admin"
    set epmpwdsource="examplePassword"
    set epmurlsource="https://source_example.oraclecloud.com"
    
    REM --- CONNECTION INFORMATION: TARGET SERVICE ----------
    set epmusertarget="example_IDM_Admin"
    set epmpwdtarget="examplePassword"
    set epmurltarget="https://target_example.oraclecloud.com"
    
    REM --- INTERNET PROXY SETTINGS: DELETE IF NOT USING A PROXY SERVER ---
    set proxyserverusername=exampleProxyServerHost
    set proxyserverpassword=exampleProxyServerPassword
    set proxyserverdomain=exampleProxyServerDomain
    
    REM ---DELETE PROXY SERVER DIRECTIVES IF NOT USED ----------------
    
    PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%scriptpath%' -epmusersource '%epmusersource%' -epmpwdsource '%epmpwdsource%' -epmurlsource '%epmurlsource%' -epmusertarget '%epmusertarget%' -epmpwdtarget '%epmpwdtarget%' -epmurltarget '%epmurltarget%' -proxyserverusername '%proxyserverusername%' -proxyserverpassword '%proxyserverpassword%' -proxyserverdomain '%proxyserverdomain%'"
  • Aggiornare replicatepredefineroles.bat in base alle esigenze. Fare riferimento alla tabella che segue per le informazioni sui valori da impostare per le proprietà in questo file.

Aggiornamento di replicatepredefineroles.bat

Parametro Descrizione
epmusersource Nome utente di un utente con i ruoli Amministratore dominio di Identity e Amministratore servizi nell'ambiente di origine.

Esempi:

Windows: set epmusersource="jDoe"

Linux/UNIX: epmusersource="jDoe"

epmpwdsource La password dell'utente o il percorso assoluto del file delle password cifrate.

Esempi:

Windows: set epmpwdsource="Example"

Linux/UNIX: epmpwdsource="Example"

epmurlsource URL dell'ambiente da cui devono essere copiati gli utenti.

Esempi:

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

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

epmusertarget Nome utente di un utente con i ruoli Amministratore dominio di Identity e Amministratore servizi nell'ambiente target.

Esempi:

Windows: set epmusertarget="John.Doe"

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

epmpwdtarget La password dell'utente o il percorso assoluto del file delle password cifrate.

Esempi:

Windows: set epmpwdtarget="Example1"

Linux/UNIX: epmpwdtarget="Example1"

epmurltarget URL dell'ambiente in cui devono essere creati gli utenti.

Esempi:

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

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

proxyserverusername Il nome utente per l'autenticazione di una sessione sicura con il server proxy che controlla l'accesso a Internet. Eliminare tutte le occorrenze di questa proprietà, se non utilizzate.

Esempi:

Windows: set proxyserverusername="Example"

Linux/UNIX: proxyserverusername="Example"

proxyserverpassword La password per autenticare l'utente con il server proxy. Eliminare tutte le occorrenze di questa proprietà, se non utilizzate.

Esempi:

Windows: set proxyserverpassword="examplePwd"

Linux/UNIX: proxyserverpassword="examplePwd"

proxyserverdomain Il nome del dominio definito per il server proxy. Eliminare tutte le occorrenze di questa proprietà, se non utilizzate.

Esempi:

Windows: set proxyserverdomain="exampleDom"

Linux/UNIX: proxyserverdomain="exampleDom"

Linux/UNIX

  • Creare replicatepredefineroles.sh copiando lo script riportato di seguito.
    #!/bin/sh
    
    # USER DEFINED VARIABLES
    # ENVIRONMENT VARIABLES
    javahome="/home/user1/jdk160_35"
    epmautomatescript="/home/exampleAdmin/epmautomate/bin/epmautomate.sh"
    
    #---- CONNECTION INFORMATION: SOURCE SERVICE ---------
    epmusersource="example_IDM_Admin"
    epmpwdsource="examplePassword"
    epmurlsource="https://source_example.oraclecloud.com"
    
    #---- CONNECTION INFORMATION: TARGET SERVICE ---------
    epmusertarget="example_IDM_Admin"
    epmpwdtarget="examplePassword"
    epmurltarget="https://target_example.oraclecloud.com"
    
    #--- INTERNET PROXY SETTINGS: DELETE IF NOT USING A PROXY SERVER ----
    proxyserverusername="exampleProxyServerHost"
    proxyserverpassword="exampleProxyServerPassword"
    proxyserverdomain="exampleProxyServerDomain"
    
    #---------------------
    
    roleassignmentreport="roleassignmentreport.csv"
    export JAVA_HOME=${javahome}
    
    replicateroles()
    {
        # Log into source service
        # ---DELETE PROXY SERVER DIRECTIVES IF NOT USED ----
        echo "Logging into source serviceat ${epmurlsource}"
        ${epmautomatescript} login ${epmusersource} ${epmpwdsource} ${epmurlsource} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
        echo "Creating Role Assignment Report: ${roleassignmentreport}"
        ${epmautomatescript} roleAssignmentReport ${roleassignmentreport}
        echo "Downloading Role Assignment Report"
        ${epmautomatescript} downloadfile ${roleassignmentreport}
        ${epmautomatescript} deletefile ${roleassignmentreport}
        ${epmautomatescript} logout
    
        echo "Creating required files"
        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
    
        # Logging in the Target service
        echo "Logging into the target service ${epmurltarget}"
        ${epmautomatescript} login ${epmusertarget} ${epmpwdtarget} ${epmurltarget} ${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"
  • Aggiornare replicatepredefineroles.sh. Fare riferimento alla tabella precedente per le informazioni sui valori da specificare. Inoltre, è necessario specificare i valori per le proprietà riportate di seguito.

    • javahome: il percorso assoluto alla directory dove è installato Java.
    • epmautomatescript: posizione di epmautomatescript.sh; ad esempio, epmautomatescript="/home/user1/epmautomate/bin/epmautomate.sh"