def setup_ranger_knox(upgrade_type=None): import params if params.enable_ranger_knox: stack_version = None if upgrade_type is not None: stack_version = params.version if params.retryAble: Logger.info( "Knox: Setup ranger: command retry enables thus retrying if ranger admin is down !" ) else: Logger.info( "Knox: Setup ranger: command retry not enabled thus skipping if ranger admin is down !" ) if params.xml_configurations_supported and params.enable_ranger_knox and params.xa_audit_hdfs_is_enabled: if params.has_namenode: params.HdfsResource("/ranger/audit", type="directory", action="create_on_execute", owner=params.hdfs_user, group=params.hdfs_user, mode=0755, recursive_chmod=True) params.HdfsResource("/ranger/audit/knox", type="directory", action="create_on_execute", owner=params.knox_user, group=params.knox_user, mode=0700, recursive_chmod=True) params.HdfsResource(None, action="execute") if params.namenode_hosts is not None and len( params.namenode_hosts) > 1: Logger.info( 'Ranger Knox plugin is enabled in NameNode HA environment along with audit to Hdfs enabled, creating hdfs-site.xml' ) XmlConfig("hdfs-site.xml", conf_dir=params.knox_conf_dir, configurations=params.config['configurations'] ['hdfs-site'], configuration_attributes=params. config['configurationAttributes']['hdfs-site'], owner=params.knox_user, group=params.knox_group, mode=0644) else: File(format('{knox_conf_dir}/hdfs-site.xml'), action="delete") if params.xml_configurations_supported: api_version = None if params.stack_supports_ranger_kerberos: api_version = 'v2' from resource_management.libraries.functions.setup_ranger_plugin_xml import setup_ranger_plugin setup_ranger_plugin( 'knox-server', 'knox', params.previous_jdbc_jar, params.downloaded_custom_connector, params.driver_curl_source, params.driver_curl_target, params.java_home, params.repo_name, params.knox_ranger_plugin_repo, params.ranger_env, params.ranger_plugin_properties, params.policy_user, params.policymgr_mgr_url, params.enable_ranger_knox, conf_dict=params.knox_conf_dir, component_user=params.knox_user, component_group=params.knox_group, cache_service_list=['knox'], plugin_audit_properties=params.config['configurations'] ['ranger-knox-audit'], plugin_audit_attributes=params. config['configurationAttributes']['ranger-knox-audit'], plugin_security_properties=params.config['configurations'] ['ranger-knox-security'], plugin_security_attributes=params. config['configurationAttributes']['ranger-knox-security'], plugin_policymgr_ssl_properties=params.config['configurations'] ['ranger-knox-policymgr-ssl'], plugin_policymgr_ssl_attributes=params. config['configurationAttributes']['ranger-knox-policymgr-ssl'], component_list=['knox-server'], audit_db_is_enabled=params.xa_audit_db_is_enabled, credential_file=params.credential_file, xa_audit_db_password=params.xa_audit_db_password, ssl_truststore_password=params.ssl_truststore_password, ssl_keystore_password=params.ssl_keystore_password, stack_version_override=stack_version, skip_if_rangeradmin_down=not params.retryAble, api_version=api_version, is_security_enabled=params.security_enabled, is_stack_supports_ranger_kerberos=params. stack_supports_ranger_kerberos, component_user_principal=params.knox_principal_name if params.security_enabled else None, component_user_keytab=params.knox_keytab_path if params.security_enabled else None) else: from resource_management.libraries.functions.setup_ranger_plugin import setup_ranger_plugin setup_ranger_plugin( 'knox-server', 'knox', params.previous_jdbc_jar, params.downloaded_custom_connector, params.driver_curl_source, params.driver_curl_target, params.java_home, params.repo_name, params.knox_ranger_plugin_repo, params.ranger_env, params.ranger_plugin_properties, params.policy_user, params.policymgr_mgr_url, params.enable_ranger_knox, conf_dict=params.knox_conf_dir, component_user=params.knox_user, component_group=params.knox_group, cache_service_list=['knox'], plugin_audit_properties=params.config['configurations'] ['ranger-knox-audit'], plugin_audit_attributes=params. config['configurationAttributes']['ranger-knox-audit'], plugin_security_properties=params.config['configurations'] ['ranger-knox-security'], plugin_security_attributes=params. config['configurationAttributes']['ranger-knox-security'], plugin_policymgr_ssl_properties=params.config['configurations'] ['ranger-knox-policymgr-ssl'], plugin_policymgr_ssl_attributes=params. config['configurationAttributes']['ranger-knox-policymgr-ssl'], component_list=['knox-server'], audit_db_is_enabled=params.xa_audit_db_is_enabled, credential_file=params.credential_file, xa_audit_db_password=params.xa_audit_db_password, ssl_truststore_password=params.ssl_truststore_password, ssl_keystore_password=params.ssl_keystore_password, stack_version_override=stack_version, skip_if_rangeradmin_down=not params.retryAble) if params.stack_supports_core_site_for_ranger_plugin and params.enable_ranger_knox and params.security_enabled: if params.has_namenode: Logger.info( "Stack supports core-site.xml creation for Ranger plugin and Namenode is installed, creating create core-site.xml from namenode configurations" ) setup_configuration_file_for_required_plugins( component_user=params.knox_user, component_group=params.knox_group, create_core_site_path=params.knox_conf_dir, configurations=params.config['configurations'] ['core-site'], configuration_attributes=params. config['configurationAttributes']['core-site'], file_name='core-site.xml') else: Logger.info( "Stack supports core-site.xml creation for Ranger plugin and Namenode is not installed, creating create core-site.xml from default configurations" ) setup_configuration_file_for_required_plugins( component_user=params.knox_user, component_group=params.knox_group, create_core_site_path=params.knox_conf_dir, configurations={ 'hadoop.security.authentication': 'kerberos' if params.security_enabled else 'simple' }, configuration_attributes={}, file_name='core-site.xml') else: Logger.info( "Stack does not support core-site.xml creation for Ranger plugin, skipping core-site.xml configurations" ) else: Logger.info('Ranger Knox plugin is not enabled')
def setup_ranger_kafka(): import params if params.enable_ranger_kafka: from resource_management.libraries.functions.setup_ranger_plugin_xml import setup_ranger_plugin if params.retryAble: Logger.info( "Kafka: Setup ranger: command retry enables thus retrying if ranger admin is down !" ) else: Logger.info( "Kafka: Setup ranger: command retry not enabled thus skipping if ranger admin is down !" ) if params.has_namenode and params.xa_audit_hdfs_is_enabled: try: params.HdfsResource("/ranger/audit", type="directory", action="create_on_execute", owner=params.hdfs_user, group=params.hdfs_user, mode=0755, recursive_chmod=True) params.HdfsResource("/ranger/audit/kafka", type="directory", action="create_on_execute", owner=params.kafka_user, group=params.kafka_user, mode=0700, recursive_chmod=True) params.HdfsResource(None, action="execute") if params.is_ranger_kms_ssl_enabled: Logger.info( 'Ranger KMS is ssl enabled, configuring ssl-client for hdfs audits.' ) setup_configuration_file_for_required_plugins( component_user=params.kafka_user, component_group=params.user_group, create_core_site_path=params.conf_dir, configurations=params.config['configurations'] ['ssl-client'], configuration_attributes=params. config['configurationAttributes']['ssl-client'], file_name='ssl-client.xml') else: Logger.info( 'Ranger KMS is not ssl enabled, skipping ssl-client for hdfs audits.' ) except Exception, err: Logger.exception( "Audit directory creation in DDPS for KAFKA Ranger plugin failed with error:\n{0}" .format(err)) setup_ranger_plugin( 'kafka-broker', 'kafka', params.previous_jdbc_jar, params.downloaded_custom_connector, params.driver_curl_source, params.driver_curl_target, params.java64_home, params.repo_name, params.kafka_ranger_plugin_repo, params.ranger_env, params.ranger_plugin_properties, params.policy_user, params.policymgr_mgr_url, params.enable_ranger_kafka, conf_dict=params.conf_dir, component_user=params.kafka_user, component_group=params.user_group, cache_service_list=['kafka'], plugin_audit_properties=params.ranger_kafka_audit, plugin_audit_attributes=params.ranger_kafka_audit_attrs, plugin_security_properties=params.ranger_kafka_security, plugin_security_attributes=params.ranger_kafka_security_attrs, plugin_policymgr_ssl_properties=params.ranger_kafka_policymgr_ssl, plugin_policymgr_ssl_attributes=params. ranger_kafka_policymgr_ssl_attrs, component_list=['kafka-broker'], audit_db_is_enabled=params.xa_audit_db_is_enabled, credential_file=params.credential_file, xa_audit_db_password=params.xa_audit_db_password, ssl_truststore_password=params.ssl_truststore_password, ssl_keystore_password=params.ssl_keystore_password, api_version='v2', skip_if_rangeradmin_down=not params.retryAble, is_security_enabled=params.kerberos_security_enabled, is_stack_supports_ranger_kerberos=params. stack_supports_ranger_kerberos, component_user_principal=params.kafka_jaas_principal if params.kerberos_security_enabled else None, component_user_keytab=params.kafka_keytab_path if params.kerberos_security_enabled else None) if params.enable_ranger_kafka: Execute(('cp', '--remove-destination', params.setup_ranger_env_sh_source, params.setup_ranger_env_sh_target), not_if=format("test -f {setup_ranger_env_sh_target}"), sudo=True) File(params.setup_ranger_env_sh_target, owner=params.kafka_user, group=params.user_group, mode=0755) if params.stack_supports_core_site_for_ranger_plugin and params.enable_ranger_kafka and params.kerberos_security_enabled: # sometimes this is a link for missing /etc/hdp directory, just remove link/file and create regular file. Execute( ('rm', '-f', os.path.join(params.conf_dir, "core-site.xml")), sudo=True) if params.has_namenode: Logger.info( "Stack supports core-site.xml creation for Ranger plugin and Namenode is installed, creating create core-site.xml from namenode configurations" ) setup_configuration_file_for_required_plugins( component_user=params.kafka_user, component_group=params.user_group, create_core_site_path=params.conf_dir, configurations=params.config['configurations'] ['core-site'], configuration_attributes=params. config['configurationAttributes']['core-site'], file_name='core-site.xml', xml_include_file=params. mount_table_xml_inclusion_file_full_path, xml_include_file_content=params.mount_table_content) else: Logger.info( "Stack supports core-site.xml creation for Ranger plugin and Namenode is not installed, creating create core-site.xml from default configurations" ) setup_configuration_file_for_required_plugins( component_user=params.kafka_user, component_group=params.user_group, create_core_site_path=params.conf_dir, configurations={ 'hadoop.security.authentication': 'kerberos' if params.kerberos_security_enabled else 'simple' }, configuration_attributes={}, file_name='core-site.xml') else: Logger.info( "Stack does not support core-site.xml creation for Ranger plugin, skipping core-site.xml configurations" )
def setup_ranger_storm(upgrade_type=None): """ :param upgrade_type: Upgrade Type such as "rolling" or "nonrolling" """ import params if params.enable_ranger_storm and params.security_enabled: site_files_create_path = format( '{storm_component_home_dir}/extlib-daemon/ranger-storm-plugin-impl/conf' ) Directory(site_files_create_path, owner=params.storm_user, group=params.user_group, mode=0775, create_parents=True, cd_access='a') stack_version = None if upgrade_type is not None: stack_version = params.version if params.retryAble: Logger.info( "Storm: Setup ranger: command retry enables thus retrying if ranger admin is down !" ) else: Logger.info( "Storm: Setup ranger: command retry not enabled thus skipping if ranger admin is down !" ) if params.has_namenode and params.xa_audit_hdfs_is_enabled: try: params.HdfsResource("/ranger/audit", type="directory", action="create_on_execute", owner=params.hdfs_user, group=params.hdfs_user, mode=0755, recursive_chmod=True) params.HdfsResource("/ranger/audit/storm", type="directory", action="create_on_execute", owner=params.storm_user, group=params.storm_user, mode=0700, recursive_chmod=True) params.HdfsResource(None, action="execute") if params.is_ranger_kms_ssl_enabled: Logger.info( 'Ranger KMS is ssl enabled, configuring ssl-client for hdfs audits.' ) setup_configuration_file_for_required_plugins( component_user=params.storm_user, component_group=params.user_group, create_core_site_path=site_files_create_path, configurations=params.config['configurations'] ['ssl-client'], configuration_attributes=params. config['configurationAttributes']['ssl-client'], file_name='ssl-client.xml') else: Logger.info( 'Ranger KMS is not ssl enabled, skipping ssl-client for hdfs audits.' ) except Exception, err: Logger.exception( "Audit directory creation in DDPS for STORM Ranger plugin failed with error:\n{0}" .format(err)) api_version = 'v2' setup_ranger_plugin( 'storm-nimbus', 'storm', params.previous_jdbc_jar, params.downloaded_custom_connector, params.driver_curl_source, params.driver_curl_target, params.java64_home, params.repo_name, params.storm_ranger_plugin_repo, params.ranger_env, params.ranger_plugin_properties, params.policy_user, params.policymgr_mgr_url, params.enable_ranger_storm, conf_dict=params.conf_dir, component_user=params.storm_user, component_group=params.user_group, cache_service_list=['storm'], plugin_audit_properties=params.config['configurations'] ['ranger-storm-audit'], plugin_audit_attributes=params.config['configurationAttributes'] ['ranger-storm-audit'], plugin_security_properties=params.config['configurations'] ['ranger-storm-security'], plugin_security_attributes=params.config['configurationAttributes'] ['ranger-storm-security'], plugin_policymgr_ssl_properties=params.config['configurations'] ['ranger-storm-policymgr-ssl'], plugin_policymgr_ssl_attributes=params. config['configurationAttributes']['ranger-storm-policymgr-ssl'], component_list=['storm-client', 'storm-nimbus'], audit_db_is_enabled=params.xa_audit_db_is_enabled, credential_file=params.credential_file, xa_audit_db_password=params.xa_audit_db_password, ssl_truststore_password=params.ssl_truststore_password, ssl_keystore_password=params.ssl_keystore_password, stack_version_override=stack_version, skip_if_rangeradmin_down=not params.retryAble, api_version=api_version, is_security_enabled=params.security_enabled, is_stack_supports_ranger_kerberos=params. stack_supports_ranger_kerberos, component_user_principal=params.ranger_storm_principal if params.security_enabled else None, component_user_keytab=params.ranger_storm_keytab if params.security_enabled else None) if params.stack_supports_core_site_for_ranger_plugin and params.enable_ranger_storm and params.security_enabled: if params.has_namenode: mount_table_xml_inclusion_file_full_path = None mount_table_content = None if 'viewfs-mount-table' in params.config['configurations']: xml_inclusion_file_name = 'viewfs-mount-table.xml' mount_table = params.config['configurations'][ 'viewfs-mount-table'] if 'content' in mount_table and mount_table[ 'content'].strip(): mount_table_xml_inclusion_file_full_path = os.path.join( site_files_create_path, xml_inclusion_file_name) mount_table_content = mount_table['content'] Logger.info( "Stack supports core-site.xml creation for Ranger plugin and Namenode is installed, creating create core-site.xml from namenode configurations" ) setup_configuration_file_for_required_plugins( component_user=params.storm_user, component_group=params.user_group, create_core_site_path=site_files_create_path, configurations=params.config['configurations'] ['core-site'], configuration_attributes=params. config['configuration_attributes']['core-site'], file_name='core-site.xml', xml_include_file=mount_table_xml_inclusion_file_full_path, xml_include_file_content=mount_table_content) else: Logger.info( "Stack supports core-site.xml creation for Ranger plugin and Namenode is not installed, creating create core-site.xml from default configurations" ) setup_configuration_file_for_required_plugins( component_user=params.storm_user, component_group=params.user_group, create_core_site_path=site_files_create_path, configurations={ 'hadoop.security.authentication': 'kerberos' if params.security_enabled else 'simple' }, configuration_attributes={}, file_name='core-site.xml') if len(params.namenode_hosts) > 1: Logger.info( 'Ranger Storm plugin is enabled along with security and NameNode is HA , creating hdfs-site.xml' ) setup_configuration_file_for_required_plugins( component_user=params.storm_user, component_group=params.user_group, create_core_site_path=site_files_create_path, configurations=params.config['configurations'] ['hdfs-site'], configuration_attributes=params. config['configurationAttributes']['hdfs-site'], file_name='hdfs-site.xml') else: Logger.info( 'Ranger Storm plugin is not enabled or security is disabled, removing hdfs-site.xml' ) File(format('{site_files_create_path}/hdfs-site.xml'), action="delete") else: Logger.info( "Stack does not support core-site.xml creation for Ranger plugin, skipping core-site.xml configurations" )
def setup_ranger_atlas(upgrade_type=None): import params if params.enable_ranger_atlas: from resource_management.libraries.functions.setup_ranger_plugin_xml import setup_ranger_plugin if params.retry_enabled: Logger.info( "ATLAS: Setup ranger: command retry enables thus retrying if ranger admin is down !" ) else: Logger.info( "ATLAS: Setup ranger: command retry not enabled thus skipping if ranger admin is down !" ) if params.has_namenode and params.xa_audit_hdfs_is_enabled: try: params.HdfsResource("/ranger/audit", type="directory", action="create_on_execute", owner=params.metadata_user, group=params.user_group, mode=0755, recursive_chmod=True) params.HdfsResource("/ranger/audit/atlas", type="directory", action="create_on_execute", owner=params.metadata_user, group=params.user_group, mode=0700, recursive_chmod=True) params.HdfsResource(None, action="execute") if params.is_ranger_kms_ssl_enabled: Logger.info( 'Ranger KMS is ssl enabled, configuring ssl-client for hdfs audits.' ) setup_configuration_file_for_required_plugins( component_user=params.metadata_user, component_group=params.user_group, create_core_site_path=params.conf_dir, configurations=params.config['configurations'] ['ssl-client'], configuration_attributes=params. config['configurationAttributes']['ssl-client'], file_name='ssl-client.xml') else: Logger.info( 'Ranger KMS is not ssl enabled, skipping ssl-client for hdfs audits.' ) except Exception, err: Logger.exception( "Audit directory creation in HDFS for ATLAS Ranger plugin failed with error:\n{0}" .format(err)) setup_ranger_plugin( 'atlas-server', 'atlas', None, params.downloaded_custom_connector, params.driver_curl_source, params.driver_curl_target, params.java64_home, params.repo_name, params.atlas_ranger_plugin_repo, params.ranger_env, params.ranger_plugin_properties, params.policy_user, params.policymgr_mgr_url, params.enable_ranger_atlas, conf_dict=params.conf_dir, component_user=params.metadata_user, component_group=params.user_group, cache_service_list=['atlas'], plugin_audit_properties=params.config['configurations'] ['ranger-atlas-audit'], plugin_audit_attributes=params.config['configurationAttributes'] ['ranger-atlas-audit'], plugin_security_properties=params.config['configurations'] ['ranger-atlas-security'], plugin_security_attributes=params.config['configurationAttributes'] ['ranger-atlas-security'], plugin_policymgr_ssl_properties=params.config['configurations'] ['ranger-atlas-policymgr-ssl'], plugin_policymgr_ssl_attributes=params. config['configurationAttributes']['ranger-atlas-policymgr-ssl'], component_list=['atlas-server'], audit_db_is_enabled=False, credential_file=params.credential_file, xa_audit_db_password=None, ssl_truststore_password=params.ssl_truststore_password, ssl_keystore_password=params.ssl_keystore_password, api_version='v2', skip_if_rangeradmin_down=not params.retry_enabled, is_security_enabled=params.security_enabled, is_stack_supports_ranger_kerberos=params. stack_supports_ranger_kerberos, component_user_principal=params.atlas_jaas_principal if params.security_enabled else None, component_user_keytab=params.atlas_keytab_path if params.security_enabled else None)