Crear rol (Administración de datos)

Resumen

Crea un rol de base de datos y le permite agregar o quitar usuarios del rol.

Uso

  • Esta herramienta solo se puede utilizar con Oracle, Microsoft SQL Server o PostgreSQL.

  • No se pueden utilizar delimitadores, como comillas dobles, al especificar el rol. El rol solo puede contener caracteres admitidos por el sistema de administración de bases de datos subyacente cuando se proporciona sin delimitadores.

Parámetros

EtiquetaExplicaciónTipo de datos
Conexión de la base de datos de entrada

El archivo de conexión con una base de datos o geodatabase corporativa. Conéctese como un usuario administrador de base de datos.

Workspace
Rol

El nombre del rol de base de datos que se va a crear. Si se trata de un rol existente, escriba el nombre de rol para el que desea agregar o quitar usuarios.

String
Otorgar a o Revocar del, usuario(s)
(Opcional)

Especifica si se agregará el rol a un usuario o lista de usuarios o si se quitará del rol de un usuario o lista de usuarios.

  • Otorgar rolSe otorgará el rol al usuario o usuarios especificados, convirtiéndolos en miembros del rol. Esta es la opción predeterminada.
  • Revocar rolSe revocará el rol del usuario o usuarios especificados y, por tanto, los quitará del rol.
String
Nombre de usuario(s)
(Opcional)

El nombre del usuario cuya pertenencia al rol cambiará. Para especificar varios usuarios, escriba los nombres de usuario separados por comas (sin espacios).

String

Salida derivada

EtiquetaExplicaciónTipo de datos
Rol creado correctamente

Si la herramienta se completó correctamente o no.

Booleano

arcpy.management.CreateRole(input_database, role, {grant_revoke}, {user_name})
NombreExplicaciónTipo de datos
input_database

El archivo de conexión con una base de datos o geodatabase corporativa. Conéctese como un usuario administrador de base de datos.

Workspace
role

El nombre del rol de base de datos que se va a crear. Si se trata de un rol existente, escriba el nombre de rol para el que desea agregar o quitar usuarios.

String
grant_revoke
(Opcional)

Especifica si se agregará el rol a un usuario o lista de usuarios o si se quitará del rol de un usuario o lista de usuarios.

  • GRANTSe otorgará el rol al usuario o usuarios especificados, convirtiéndolos en miembros del rol. Esta es la opción predeterminada.
  • REVOKESe revocará el rol del usuario o usuarios especificados y, por tanto, los quitará del rol.
String
user_name
(Opcional)

El nombre del usuario cuya pertenencia al rol cambiará. Para especificar varios usuarios, escriba los nombres de usuario separados por comas (sin espacios).

String

Salida derivada

NombreExplicaciónTipo de datos
out_result

Si la herramienta se completó correctamente o no.

Booleano

Muestra de código

Ejemplo 1 de CreateRole (ventana de Python)

Crea un rol de base de datos denominado editores.

import arcpy
arcpy.CreateRole_management("C:\\gdbconnections\\gdb_oracle.sde", "editors")
Ejemplo 2 de CreateRole (ventana de Python)

Crea un rol de grupo de base de datos y preparadores de borradores y lo otorga a los usuarios eng1 y eng2.

import arcpy
arcpy.CreateRole_management("C:\\dbconnections\\db_postg.sde", "drafters", 
                            "GRANT", "eng1,eng2")
Ejemplo 3 de CreateRole (ventana de Python)

Otorga un rol de base de datos existente, lectores, al auditor de usuario.

import arcpy
arcpy.CreateRole_management("C:\\connectionfiles\\db_ss.sde", "readers", 
                            "GRANT", "auditor")
Ejemplo 4 de CreateRole (ventana de Python)

Revoca el rol de base de datos, creadores, de los usuarios de la base de datos intern1, intern2 e intern3.

import arcpy
arcpy.CreateRole_management("D:\\myconnectionfiles\\mygdb.sde", "creators", 
                            "REVOKE", "intern1,intern2,intern3")
Ejemplo 5 de CreateRole (script independiente)

El siguiente script independiente le permite proporcionar la información específica de su sitio utilizando las opciones para hacer lo siguiente:

  • Crear un archivo de conexión de base de datos, que se utiliza como la base de datos de entrada.
  • Crear un rol de base de datos.
  • Agregar usuarios al nuevo rol.

"""
Name: create_database_role.py
Description: Provide connection information to a database user.
Type create_database_role.py -h or create_database_role.py --help for usage
Author: Esri
"""

# Import system modules
import arcpy, os, optparse, sys

# Define usage and version
parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for 10.1 release")

#Define help and options
parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS:  SQLSERVER, ORACLE, or POSTGRESQL.")                   
parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name")
parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name:  Not required for Oracle")
parser.add_option ("--auth", dest="Account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive):  DATABASE_AUTH, OPERATING_SYSTEM_AUTH.  Default=DATABASE_AUTH")
parser.add_option ("-U", dest="Dbms_admin", type="string", default="", help="DBMS administrator user")
parser.add_option ("-P", dest="Dbms_admin_pwd", type="string", default="", help="DBMS administrator password")
parser.add_option ("-o", dest="operation", type ="choice", choices=['GRANT', 'REVOKE'], default='GRANT', help="Specify which operation to perform: grant to or revoke from the user(s). Options (case-sensitive):  GRANT, REVOKE.  Default=GRANT")
parser.add_option ("-r", dest="role", type="string", default="", help="role to be granted to the user")
parser.add_option ("-u", dest="userlist", type="string", default="", help="List of users to grant to or revoke from, separated by comma.")
# Check if value entered for option
try:
	(options, args) = parser.parse_args()

	#Check if no system arguments (options) entered
	if len(sys.argv) == 1:
		print "%s: error: %s\n" % (sys.argv[0], "No command options given")
		parser.print_help()
		sys.exit(3)

	#Usage parameters for spatial database connection
	database_type = options.Database_type.upper()
	instance = options.Instance
	database = options.Database.lower()	
	account_authentication = options.Account_authentication.upper()
	dbms_admin = options.Dbms_admin
	dbms_admin_pwd = options.Dbms_admin_pwd
	userlist = options.userlist
	role = options.role
	operation = options.operation

	
	if (database_type == "SQLSERVER"):
		database_type = "SQL_SERVER"
	
	if( database_type ==""):	
		print " \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.")
		parser.print_help()
		sys.exit(3)		
		
	if (role == ""):
		print " \n%s: error: \n%s\n" % (sys.argv[0], "Role name (-r) must be specified.")
		parser.print_help()
		sys.exit(3)			
	
	if(database_type == "SQL_SERVER"):
		if( account_authentication == "DATABASE_AUTH" and dbms_admin == ""):
			print "\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified with database authentication")
			sys.exit(3)
		if( account_authentication == "OPERATING_SYSTEM_AUTH" and dbms_admin != ""):
			print "\nWarning: %s\n" % ("Ignoring DBMS administrator specified when using operating system authentication...")	
	else:				
		if( dbms_admin == ""):
			print "\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!")
			sys.exit(3)

	# Get the current product license
	product_license=arcpy.ProductInfo()
	
	# Checks required license level
	if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE':
		print "\n" + product_license + " license found!" + " Creating a role in an enterprise geodatabase or database requires an ArcGIS for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for Server license."
		sys.exit("Re-authorize ArcGIS before creating enterprise geodatabase.")
	else:
		print "\n" + product_license + " license available!  Continuing to create..."
		arcpy.AddMessage("+++++++++")

	# Local variables
	instance_temp = instance.replace("\\","_")
	instance_temp = instance_temp.replace("/","_")
	instance_temp = instance_temp.replace(":","_")
	Conn_File_NameT = instance_temp + "_" + database + "_" + dbms_admin   

	if os.environ.get("TEMP") == None:
		temp = "c:\\temp"	
	else:
		temp = os.environ.get("TEMP")
	
	if os.environ.get("TMP") == None:
		temp = "/usr/tmp"		
	else:
		temp = os.environ.get("TMP")  

	Connection_File_Name = Conn_File_NameT + ".sde"
	Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde"
	
	# Check for the .sde file and delete it if present
	arcpy.env.overwriteOutput=True
	if os.path.exists(Connection_File_Name_full_path):
		os.remove(Connection_File_Name_full_path)

	try:
		print "\nCreating Database Connection File...\n"	
		# Process: Create Database Connection File...
		# Usage:  out_file_location, out_file_name, DBMS_TYPE, instnace, account_authentication, username, password, database, save_username_password(must be true)
		arcpy.CreateDatabaseConnection_management(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=dbms_admin, password=dbms_admin_pwd, save_user_pass="TRUE")
	        for i in range(arcpy.GetMessageCount()):
			if "000565" in arcpy.GetMessage(i):   #Check if database connection was successful
				arcpy.AddReturnMessage(i)
				arcpy.AddMessage("\n+++++++++")
				arcpy.AddMessage("Exiting!!")
				arcpy.AddMessage("+++++++++\n")
				sys.exit(3)            
			else:
				arcpy.AddReturnMessage(i)
				arcpy.AddMessage("+++++++++\n")

		print "Creating database role...\n"
		arcpy.CreateRole_management(input_database=Connection_File_Name_full_path, grant_revoke=operation, role=role,  user_name=userlist)
		for i in range(arcpy.GetMessageCount()):
			arcpy.AddReturnMessage(i)
		arcpy.AddMessage("+++++++++\n")
	except:
		for i in range(arcpy.GetMessageCount()):
			arcpy.AddReturnMessage(i)
			
#Check if no value entered for option	
except SystemExit as e:
	if e.code == 2:
		parser.usage = ""
		print "\n"
		parser.print_help()   
		parser.exit(2)

Entornos

Casos especiales

Información de licenciamiento

  • Basic: No
  • Standard: Sí
  • Advanced: Sí

Temas relacionados