Beispiel #1
0
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')
Beispiel #2
0
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"
            )
Beispiel #3
0
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)