Utilice los scripts de esta sección para clonar asignaciones de roles de aplicación 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
replicatepredefinedroles.ps1 copiando el siguiente script.
# 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"
input.properties copiando el siguiente script.
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
input.properties según sea necesario. Consulte la siguiente tabla para obtener información sobre los valores que debe establecer para las propiedades de este archivo.
Actualización de input.properties
| 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: Linux/UNIX: |
epmpwdsource |
Contraseña del usuario o la ruta absoluta del archivo de contraseñas cifradas.
Ejemplos: Windows: Linux/UNIX: |
epmurlsource |
URL del entorno del que se van a copiar los usuarios.
Ejemplos: Windows: Linux/UNIX: |
epmidentitydomainsource |
Nombre del dominio de identidad que usa el entorno de origen.
Ejemplos: Windows: Linux/UNIX: |
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: Linux/UNIX: |
epmpwdtarget |
Contraseña del usuario o la ruta absoluta del archivo de contraseñas cifradas.
Ejemplos: Windows: Linux/UNIX: |
epmurltarget |
URL del entorno en el que se van a crear los usuarios.
Ejemplos: Windows: Linux/UNIX: |
epmidentitydomaintarget |
Nombre del dominio de identidad que usa el entorno de destino.
Ejemplos: Windows: Linux/UNIX: |
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: Linux/UNIX: |
proxyserverpassword |
Contraseña para autentificar el usuario con el servidor proxy. Borre todas las apariciones de esta propiedad si no se utiliza.
Ejemplos: Windows: Linux/UNIX: |
proxyserverdomain |
Nombre del dominio definido para el servidor proxy. Borre todas las apariciones de esta propiedad si no se utiliza.
Ejemplos: Windows: Linux/UNIX: |
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: |
Linux/UNIX
input.properties copiando este script:
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
input.properties. Consulte la Tabla 3-* 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"replicatepredefinedroles.sh copiando el siguiente script.
#!/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"
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"