Anwendungsrollenzuweisungen aus einer Umgebung in einer anderen replizieren

Verwenden Sie die Skripte in diesem Abschnitt, um Anwendungsrollenzuweisungen aus einer Umgebung in einer anderen zu klonen. Der Benutzer, der diese Skripte ausführt, muss in beiden Umgebungen über die Rolle Serviceadministrator verfügen.

Hinweis:

Wenn Sie die PDF-Version dieses Dokuments verwenden: Um zu verhindern, dass Zeilenumbrüche und Fußzeileninformationen diese Skripte unbrauchbar machen, kopieren Sie sie aus der HTML-Version dieses Themas.

Windows

  1. Erstellen Sie replicatepredefinedroles.ps1, indem Sie das folgende Skript kopieren.
    # Replicate application roles script
    $inputproperties = ConvertFrom-StringData(Get-Content ./input.properties -raw)
    $epmusersource="$($inputproperties.epmusersource)"
    $epmpwdsource="$($inputproperties.epmpwdsource)"
    $epmurlsource="$($inputproperties.epmurlsource)"
    $epmidentitydomainsource="$($inputproperties.epmidentitydomainsource)"
    $epmusertarget="$($inputproperties.epmusertarget)"
    $epmpwdtarget="$($inputproperties.epmpwdtarget)"
    $epmurltarget="$($inputproperties.epmurltarget)"
    $epmidentitydomaintarget="$($inputproperties.epmidentitydomaintarget)"
    $proxyserverusername="$($inputproperties.proxyserverusername)"
    $proxyserverpassword="$($inputproperties.proxyserverpassword)"
    $proxyserverdomain="$($inputproperties.proxyserverdomain)"
    $emailtoaddress="$($inputproperties.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 application roles script started"
    init
    replicateroles
    echo "Replicate application roles script completed"
    
  2. Erstellen Sie die Datei input.properties, indem Sie das folgende Skript kopieren.
    epmusersource=EPM USER FOR SOURCE ENVIRONMENT
    epmpwdsource=EPM PASSWORD FILE 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 FILE 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 FILE
    proxyserverdomain=PROXY SERVER DOMAIN
    emailtoaddress=EMAIL_TO_ADDRESS
  3. Aktualisieren Sie input.properties je nach Bedarf. In der folgenden Tabelle finden Sie Informationen zu den Werten, die Sie für die Eigenschaften in dieser Datei festlegen müssen.

    input.properties aktualisieren

    Parameter Beschreibung
    epmusersource Benutzername eines Benutzers mit der Rolle Identitätsdomainadministrator und Serviceadministrator in der Quellumgebung.

    Beispiele:

    Windows: set epmusersource="jDoe"

    Linux/UNIX: epmusersource="jDoe"

    epmpwdsource Kennwort des Benutzers oder der absolute Pfad der verschlüsselten Kennwortdatei.

    Beispiele:

    Windows: set epmpwdsource="Example"

    Linux/UNIX: epmpwdsource="Example"

    epmurlsource URL der Umgebung, aus der Benutzer kopiert werden sollen.

    Beispiele:

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

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

    epmidentitydomainsource Name der Identitätsdomain, die von der Quellumgebung verwendet wird.

    Beispiele:

    Windows: set epmidentitydomainsource="example_source_dom"

    Linux/UNIX: epmidentitydomainsource="example_source_dom"

    epmusertarget Benutzername eines Benutzers mit der Rolle Identitätsdomainadministrator und Serviceadministrator in der Zielumgebung.

    Beispiele:

    Windows: set epmusertarget="John.Doe"

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

    epmpwdtarget Kennwort des Benutzers oder der absolute Pfad der verschlüsselten Kennwortdatei.

    Beispiele:

    Windows: set epmpwdtarget="Example1"

    Linux/UNIX: epmpwdtarget="Example1"

    epmurltarget URL der Umgebung, in der Benutzer erstellt werden sollen.

    Beispiele:

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

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

    epmidentitydomaintarget Name der Identitätsdomain, die von der Zielumgebung verwendet wird.

    Beispiele:

    Windows: set epmidentitydomaintarget="example_target_dom"

    Linux/UNIX: epmidentitydomaintarget="example_target_dom"

    proxyserverusername Der Benutzername zum Authentifizieren einer sicheren Session auf dem Proxyserver, der den Zugriff auf das Internet steuert. Löschen Sie alle Vorkommen dieser Eigenschaft, wenn sie nicht verwendet wird.

    Beispiele:

    Windows: set proxyserverusername="Example"

    Linux/UNIX: proxyserverusername="Example"

    proxyserverpassword Das Kennwort zur Authentifizierung des Benutzers beim Proxyserver. Löschen Sie alle Vorkommen dieser Eigenschaft, wenn sie nicht verwendet wird.

    Beispiele:

    Windows: set proxyserverpassword="examplePwd"

    Linux/UNIX: proxyserverpassword="examplePwd"

    proxyserverdomain Der Name der Domain, die für den Proxyserver definiert ist. Löschen Sie alle Vorkommen dieser Eigenschaft, wenn sie nicht verwendet wird.

    Beispiele:

    Windows: set proxyserverdomain="exampleDom"

    Linux/UNIX: proxyserverdomain="exampleDom"

    emailtoaddress Optional, die E-Mail-Adresse, an die der Bericht zur Rollenzuweisung gesendet werden soll. Der Bericht wird nur per E-Mail gesendet, wenn dieser Wert angegeben wurde.

    Beispiel: emailtoaddress=john.doe@example.com

Linux/UNIX

  1. Erstellen Sie input.properties, indem Sie dieses Skript kopieren:
    javahome=JAVA HOME
    epmautomatescript=EPM AUTOMATE SCRIPT LOCATION
    epmusersource=EPM USER FOR SOURCE ENVIRONMENT
    epmpwdsource=EPM PASSWORD FILE 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 FILE 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 FILE
    proxyserverdomain=PROXY SERVER DOMAIN
    emailtoaddress=EMAIL_TO_ADDRESS
  2. Aktualisieren Sie input.properties. In der Tabelle 3-* finden Sie Informationen zu den Werten, die Sie angeben müssen. Darüber hinaus müssen Sie die Werte für diese Eigenschaften angeben:
    • javahome: der absolute Pfad zu dem Verzeichnis, in dem Java installiert ist.
    • epmautomatescript: Speicherort von epmautomatescript.sh; z.B. epmautomatescript="/home/user1/epmautomate/bin/epmautomate.sh"
  3. Erstellen Sie replicatepredefinedroles.sh, indem Sie das folgende Skript kopieren.
    #!/bin/sh
    . ./input.properties
    
    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 application roles script started"
    init
    replicateroles
    echo "Replicate application roles script completed"
    
  4. Aktualisieren Sie replicatepredefineroles.sh. In der vorstehenden Tabelle finden Sie Informationen zu den Werten, die Sie angeben müssen. Darüber hinaus müssen Sie die Werte für diese Eigenschaften angeben:
    • javahome: der absolute Pfad zu dem Verzeichnis, in dem Java installiert ist.
    • epmautomatescript: Speicherort von epmautomatescript.sh; z.B. epmautomatescript="/home/user1/epmautomate/bin/epmautomate.sh"