환경 간에 사전 정의된 역할 지정 복제

이 섹션의 스크립트를 사용하여 환경 간에 사전 정의된 역할 지정을 복제할 수 있습니다. 이 스크립트를 실행하는 사용자에게 두 환경에서 모두 서비스 관리자 역할이 있어야 합니다.

주:

이 문서의 PDF 버전을 사용 중인 경우: 이 스크립트를 사용할 수 없게 만드는 줄 바꿈 및 바닥글 정보를 방지하려면 이 항목의 HTML 버전에서 스크립트를 복사합니다.

Windows

  • 다음 스크립트를 복사하여 replicatepredefineroles.ps1을 생성합니다.
    # 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"
    
  • 다음 스크립트를 복사하여 replicatepredefineroles.bat를 생성합니다.
    @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%'"
  • 필요에 따라 replicatepredefineroles.bat를 업데이트합니다. 이 파일의 등록정보에 설정해야 하는 값에 대한 자세한 내용은 다음 테이블을 참조하십시오.

replicatepredefineroles.bat 업데이트

매개변수 설명
epmusersource 소스 환경에서 ID 도메인 관리자서비스 관리자 역할을 가진 사용자의 사용자 이름입니다.

예:

Windows: set epmusersource="jDoe"

Linux/UNIX: epmusersource="jDoe"

epmpwdsource 사용자 비밀번호 또는 암호화된 비밀번호 파일의 절대 경로입니다.

예:

Windows: set epmpwdsource="Example"

Linux/UNIX: epmpwdsource="Example"

epmurlsource 복사할 사용자가 있는 환경의 URL입니다.

예:

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

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

epmusertarget 타겟 환경에서 ID 도메인 관리자서비스 관리자 역할을 가진 사용자의 사용자 이름입니다.

예:

Windows: set epmusertarget="John.Doe"

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

epmpwdtarget 사용자 비밀번호 또는 암호화된 비밀번호 파일의 절대 경로입니다.

예:

Windows: set epmpwdtarget="Example1"

Linux/UNIX: epmpwdtarget="Example1"

epmurltarget 사용자를 생성할 환경의 URL입니다.

예:

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

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

proxyserverusername 인터넷에 대한 액세스를 제어하는 프록시 서버를 통해 보안 세션을 인증할 사용자 이름입니다. 사용되지 않는 경우 이 등록정보의 모든 발생을 삭제합니다.

예:

Windows: set proxyserverusername="Example"

Linux/UNIX: proxyserverusername="Example"

proxyserverpassword 프록시 서버를 통해 사용자를 인증할 비밀번호입니다. 사용되지 않는 경우 이 등록정보의 모든 발생을 삭제합니다.

예:

Windows: set proxyserverpassword="examplePwd"

Linux/UNIX: proxyserverpassword="examplePwd"

proxyserverdomain 프록시 서버에 대해 정의된 도메인의 이름입니다. 사용되지 않는 경우 이 등록정보의 모든 발생을 삭제합니다.

예:

Windows: set proxyserverdomain="exampleDom"

Linux/UNIX: proxyserverdomain="exampleDom"

Linux/UNIX

  • 다음 스크립트를 복사하여 replicatepredefineroles.sh를 생성합니다.
    #!/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"
  • replicatepredefineroles.sh를 업데이트합니다. 지정해야 하는 값에 대한 자세한 내용은 위 테이블을 참조하십시오. 다음 등록정보의 값도 지정해야 합니다.

    • javahome: Java가 설치된 디렉터리의 절대 경로입니다.
    • epmautomatescript: epmautomatescript.sh 위치(예: epmautomatescript="/home/user1/epmautomate/bin/epmautomate.sh")입니다.