在本文中,我们将介绍针对“场景 2:Windows AD + EMR 本机游侠”的解决方案。 就像上 一篇文章一样,我们将介绍解决方案体系结构,给出详细的安装步骤说明,并验证已安装的环境。
1. 解决方案概述
1.1 解决方案架构
在此解决方案中,Windows AD 扮演身份验证提供程序,所有用户帐户数据存储在其上,Ranger扮演授权控制器。因为我们选择了高度依赖 Kerberos 的 EMR 原生 Ranger 解决方案,所以需要 Kerberos KDC。在此解决方案中,我们建议选择由 EMR 创建的集群专用 KDC,而不是外部 KDC;这可以帮助我们节省安装 Kerberos 的工作。如果您有现有的 KDC,此解决方案也支持它。
要统一用户帐户数据,必须集成 Windows AD 和 Kerberos。最好的集成是单向跨领域信任(Windows AD 领域信任 Kerberos KDC 领域);这也是 EMR 的内置功能。对于Ranger,它将同步来自Windows AD的帐户数据,以授予针对Windows AD中的用户帐户的权限。同时,EMR 集群需要安装一系列 Ranger 插件。这些插件将与 Ranger 服务器进行检查,以确保当前用户有权执行操作。EMR 集群还将通过 SSSD 从 Windows AD 同步帐户数据,以便用户可以登录 EMR 集群的节点并提交作业。
1.2 身份验证详解
让我们深入了解身份验证部分。通常,我们将完成以下工作。有些是由安装程序完成的,有些是 EMR 内置功能,无需手动操作。
安装视窗广告。
as.ps1
。如果启用了跨领域信任,则在创建 EMR 集群时将完成其他作业)。1.3 授权详解
对于授权,游侠绝对是主角。如果我们深入研究它,它的架构如下所示:
安装程序将完成以下作业:
- 将 MySQL 安装 为 Ranger 的策略数据库。
- 安装 Solr 作为 Ranger 的审核存储。
- 安装游侠管理员。
- 安装 Ranger UserSync。
- 安装 EMRFS(S3) Ranger 插件。
- 安装 Spark Ranger 插件。
- 安装 Hive Ranger 插件
2. 安装和集成
通常,安装和集成过程可以分为三个阶段:
- 先决条件
- 多合一安装
- 创建 EMR 集群
下图详细说明了进度:
在第一阶段,我们需要做一些准备工作。在第 2 阶段,我们将开始安装和集成。此阶段有两个选项:一个是由基于命令行的工作流驱动的一体化安装。另一个是分步安装。在大多数情况下,多合一安装始终是最佳选择;但是,您的安装工作流程可能会因不可预见的错误而中断。如果要从上一个失败的步骤继续安装,请尝试分步安装。或者有时,您想重新尝试具有不同参数值的步骤以找到正确的步骤,逐步也是更好的选择。在第 3 阶段,我们需要使用第 2 阶段的输出工件自行创建一个 EMR 集群,即 IAM 角色和 EMR 安全配置。
作为设计原则,安装程序不包括创建 EMR 集群的任何操作。您应该始终自己创建 集群 ,因为 EMR 集群可能具有任何不可预测的复杂设置,即特定于应用程序的(HDFS、Yarn 等)配置、步骤脚本、引导脚本等;不建议将 Ranger 的安装与 EMR 集群的创建相结合。
但是,阶段 2 和阶段 3 之间的执行顺序略有重叠。基于 EMR 原生游侠创建 EMR 集群时,需要提供安全配置和游侠特定的 IAM 角色的副本。它们必须在创建 EMR 集群之前可用,并且在创建集群时,它还需要与 Ranger 服务器交互(服务器地址在安全配置中分配) 为了解决这种循环依赖关系,安装程序将输出一些依赖于群集的项目。接下来,它将指示用户使用这些项目创建自己的群集。同时,安装进度将挂起,并继续监视目标群集的状态。准备就绪后,安装进度将恢复并继续执行 REST 操作。
注释:
- 安装程序会将本地主机视为 Ranger 服务器,以在 Ranger 上安装所有内容。对于非游侠操作,它将通过 SSH 启动远程操作。因此,您可以留在Ranger服务器上执行命令行。无需在多个主机之间切换。
- 为了 Kerberos,所有主机地址都必须使用 FQDN。不接受没有域名的 IP 和主机名。
2.1 先决条件
2.1.1 专有网络约束
为了实现跨领域信任,需要对 VPC 施加一系列约束。在安装之前,请确保 EC2 实例的主机名不超过 15 个字符。这是 Windows AD 的限制;但是,由于 AWS 根据 IPv4 地址分配 DNS 主机名,因此此限制会传播到 VPC。如果VPC的网段可以约束IPv4地址不超过9个字符。分配的 DNS 主机名可以限制为 15 个字符。在限制下,VPC 10.0.0.0/16
的建议 CIDR 设置为 。
尽管我们可以在 EC2 实例可用后更改默认主机名,但当计算机加入 Windows AD 目录时,将使用主机名。这发生在创建 EMR 集群期间。对主机名的修改不起作用。从技术上讲,一种可能的解决方法是将修改主机名操作放入引导脚本中,但我们没有尝试过。要更改主机名,请参阅标题为: 更改 Amazon Linux 实例的主机名的 Amazon 文档。
有关其他注意事项,请参阅 EMR 官方文档,标题为: 教程:使用 Active Directory 域配置跨领域信任。
2.1.2 创建视窗广告服务器
在本节中,我们将创建一个带有PowerShell脚本的Windows AD服务器。首先,使用映像创建一个 Windows Server 2019 Base
EC2 实例(还测试和支持 2016)。接下来,使用管理员帐户登录,从这里 下载Windows AD安装脚本文件接下来,按“Win + R”打开运行对话框,复制以下命令行,并将参数值替换为您自己的设置:
Powershell.exe -NoExit -ExecutionPolicy Bypass -File %USERPROFILE%\Desktop\ad.ps1 -DomainName <replace-with-your-domain> -Password <replace-with-your-password> -TrustedRealm <replace-with-your-realm>
具有ad.ps1
预定义的默认参数值:域名为 ,密码为 ,可信领域为 Admin1234!
example.com
COMPUTE.INTERNAL
。作为快速入门,您可以右键单击ad.ps1
该文件并选择Run with PowerShell
执行它。(注意:您无法通过右键单击“使用 PowerShell 运行”us-east-1
来运行 PowerShell 脚本,因为它的默认受信任领域是 EC2.INTERNAL
,因此您应该通过上述命令行显式设置-TrustedRealm EC2.INTERNAL
)。
执行脚本后,计算机将要求重新启动,这是Windows强制的。我们应该等待计算机重新启动,然后以管理员身份重新登录,以便脚本文件中的后续命令继续执行。请务必重新登录;否则,部分脚本没有机会执行。
再次登录后,我们可以从“开始”菜单->Windows管理工具->“活动目录用户和计算机”中打开“Active Directory用户和计算机”,或者从“运行”对话框中输入 dsa.msc
以查看创建的AD。如果一切顺利,我们将得到以下AD目录:
接下来,我们需要检查DNS设置,无效的DNS设置将导致安装失败。运行脚本时的一个常见错误是“游侠服务器无法解析群集节点的 DNS”。 此问题通常是由不正确的 DNS 转发器设置引起的。我们可以从“开始”菜单->Windows管理工具->DNS打开DNS管理器,或者从“运行”对话框中输入 dnsmgmt.msc
,然后打开“转发器”选项卡。 通常,有一条记录的 IP 地址应该是 10.0.0.2
:
10.0.0.2
是 VPC 中网络的默认 10.0.0.0/16
DNS 服务器地址。根据VPC文件:
Amazon DNS 服务器不驻留在 VPC 的特定子网或可用区内。它位于地址 169.254.169.253(以及 VPC IPv4 网络范围底部的保留 IP 地址加 2)和 fd00:ec2::253。例如,10.0.0.0/16 网络上的 Amazon DNS 服务器位于 10.0.0.2。对于具有多个IPv4网段的VPC,DNS服务器IP地址位于主网段。
转发器的 IP 地址通常来自 VPC 的“DHCP 选项集”的“域名服务器”,其默认值为 AmazonProvidedDNS
当您在 VPC 中重新安装 Windows AD 时,可能会发生这种情况。如果在重新安装之前没有将“域名服务器”恢复到 AmazonProvidedDNS
,转发器的IP始终是以前的Windows AD服务器的地址,它可能不再存在,这就是Ranger服务器或群集节点无法解析DNS的原因。因此,我们可以简单地将转发器 IP 更改为默认值,即 10.0.0.2
在 10.0.0.0/16
网络中。
另一个与 DNS 相关的配置是 IPv4 DNS 设置。通常,它的默认设置是可以的,只需附加它,如下所述(在 cn-north-1
区域中):
2.1.3 创建 DHCP 选项集并附加到 VPC
跨领域信任要求 KDC 可以通过网络相互联系并解析彼此的域名。因此,用户需要在 VPC 的“DHCP 选项集”中将 Windows AD 设置为 DNS 服务器。以下命令行将完成此作业(在安装了 AWS CLI 的 Linux 主机上运行以下 脚本)。
“域名:” cn-north-1.compute.internal
将是长主机名 (FQDN) 的“域名”部分。通常,对于 us-east-1
区域,请指定 ec2.internal
。对于其他区域,请指定 <region>.compute.internal
。
注意: 不要将Windows AD的域名设置为它,即 example.com
。
在我们的示例中,它们是两个不同的东西;否则,跨领域信任将失败。“域名服务器:” 10.0.13.40
是 Windows AD 服务器的私有 IP。以下是已附加到此DHCP选项集的VPC的快照:
2.1.4 将 EC2 实例创建为游侠服务器
接下来,我们需要准备一个 EC2 实例作为 Ranger 的服务器
最佳做法是将 Ranger 服务器 ElasticMapReduce-master
添加到安全组。由于 Ranger 非常接近 EMR 集群,因此可以将其视为非 EMR 内置主服务。对于 Windows AD,我们必须确保可以从 Ranger 和要创建的 EMR 集群的所有节点访问其端口 389。为简单起见,您还可以将 Windows AD 添加到安全组中 ElasticMapReduce-master
。
2.1.5 下载安装程序
EC2 实例准备就绪后,选择 Ranger 服务器,通过 SSH 登录,然后运行以下命令以下载安装程序包:
sudo yum -y install git
git clone https://github.com/bluishglc/ranger-emr-cli-installer.git
2.1.6 上传 SSH 密钥文件
如前所述,安装程序基于本地主机(Ranger 服务器)。要在 EMR 集群上执行远程安装操作,需要 SSH 私钥。我们应该将其上传到 Ranger 服务器并保留文件路径;它将是变量 SSH_KEY
的值。
2.1.7 导出特定于环境的变量
在安装过程中,将多次传递以下特定于环境的参数。建议先导出它们;然后,所有命令行都将引用这些变量而不是文字。
export REGION='TO_BE_REPLACED'
export ACCESS_KEY_ID='TO_BE_REPLACED'
export SECRET_ACCESS_KEY='TO_BE_REPLACED'
export SSH_KEY='TO_BE_REPLACED'
export AD_HOST='TO_BE_REPLACED'
以下是上述变量的注释:
REGION
: AWS 区域,i
us-east-1
、、、cn-north-1
等。
ACCESS_KEY_ID
:您的 IAM 账户的 AWS 访问密钥 ID。确保您的帐户具有足够的权限;最好拥有管理员权限。SECRET_ACCESS_KEY
:您的 IAM 账户的 AWS 秘密访问密钥。SSH_KEY
:您刚刚上传的本地主机上的 SSH 私钥文件路径。AD_HOST
:AD 服务器的 FQDN。VPC_ID
:专有网络的 ID。请根据您的环境仔细替换上述变量的值,并记住使用 FQDN 作为主机名。以下是该示例的副本:
export REGION='cn-north-1'
export ACCESS_KEY_ID='<change-to-your-access-key-id>'
export SECRET_ACCESS_KEY='<change-to-your-secret-access-key>'
export SSH_KEY='/home/ec2-user/key.pem'
export AD_HOST='example.com'
2.2 多合一安装
2.2.1 快速入门
现在,让我们开始一个多合一安装。执行以下命令行:
sudo sh ./ranger-emr-cli-installer/bin/setup
com’ \
–ad-base-dn ‘cn=users,dc=example,dc=com’ \
–ad-user-object-class ‘person’ \
–启用跨领域信任 ‘true’ \
–信任领域 ‘EXAMPLE.COM’ \
–信任域“example.com” \
–信任主机“example.com” \
–ranger-plugins ’emr-native-emrfs,emr-native-spark,emr-native-hive’
以上命令行的参数说明请参考附录。如果一切顺利,命令行将执行工作流图中的步骤 2.1 到 2.6。这可能需要十分钟或更长时间,具体取决于您的网络带宽。接下来,它将挂起并指示用户使用以下两个工件创建 EMR 集群:
- 名为
EMR_EC2_RangerRole
的 EC2 实例配置文件。 - 名为
Ranger@<YOUR—RANGER—HOST—FQDN>
的 EMR 安全配置 。
它们由命令行在步骤 2.2 和 2.4 中创建。创建集群时,您可以在 EMR Web 控制台中找到它们。以下是此刻命令行的快照:
接下来,我们应该切换到 EMR Web 控制台以创建集群。请务必选择命令行控制台中提示的 EC2 实例配置文件和安全配置。至于 Kerberos 和跨领域信任,请填写并记下以下项目:
- 境界:科贝罗斯的境界。 注意: 对于区域
us-east-1
,默认领域为EC2.INTERNAL
。对于其他区域,默认领域为COMPUTE.INTERNAL
。您可以分配另一个领域名称,但请确保输入的领域名称和作为参数传递给的ad.ps1
受信任领域名称是相同的值。
- KDC 管理员密码:kadmin 的密码。
- Active Directory 域加入用户:这是一个具有足够权限的 AD 帐户,可以将群集节点添加到 Windows 域中。这是启用跨领域信任的必要操作
如果 Windows AD 是由 安装的,则会自动创建一个名为的ad.ps1
domain-admin
帐户,因此我们在此处填写“域管理员”。您也可以分配其他帐户,但请确保该帐户存在且具有足够的权限。
以下是目前 EMR Web 控制台的快照:
EMR 集群开始创建后,集群 ID 将是确定的。我们需要复制 id 并返回命令行终端。在 CLI 提示符“是否已创建集群?[y/n]:“(您不需要疣即可使群集完全准备就绪)。接下来,命令行将要求您执行两项操作:
- 输入群集 ID。
- 确认 Hue 已与 LDAP 集成。如果已集成,则在集群准备就绪后,安装程序将使用特定于 Hue 的设置更新 EMR 配置。请注意,此操作将覆盖 EMR 现有配置。
最后,输入“y”以确认所有输入。安装过程将恢复,如果分配的 EMR 集群尚未准备就绪,命令行将继续监控它,直到它进入“正在等待”状态。以下是命令行此刻的快照:
当群集准备就绪(状态为“正在等待”)时,命令行将继续执行工作流的步骤 2.8,并以“全部完成!!“消息。
2.2.2 定制
现在,多合一安装已完成,我们将介绍有关自定义的更多信息。通常,此安装程序遵循“约定重于配置”的原则。 大多数参数都是默认值预设的。具有上述命令行的完整参数列表的等效版本如下:
sudo sh ./ranger-emr-cli-installer/bin/setup.sh install \
--region "$REGION" \
--access-key-id "$ACCESS_KEY_ID" \
--secret-access-key "$SECRET_ACCESS_KEY" \
--ssh-key "$SSH_KEY" \
--solution 'emr-native' \
--auth-provider 'ad' \
--ad-host "$AD_HOST" \
--ad-domain 'example.com' \
--ad-base-dn 'cn=users,dc=example,dc=com' \
--ad-user-object-class 'person' \
--enable-cross-realm-trust 'true' \
--trusting-realm 'EXAMPLE.COM' \
--trusting-domain 'example.com' \
--trusting-host 'example
1.0′ \
–mysql-host $(hostname -f) \
–mysql-root-password ‘Admin1234!’ \
–mysql-ranger-db-user-password ‘Admin1234!’ \
–solr-host $(主机名 -f) \
–ranger-bind-dn ‘cn=ranger,ou=services,dc=example,dc=com’ \
–游侠绑定密码 ‘Admin1234!’ \
–hue-bind-dn ‘cn=hue,ou=services,dc=example,dc=com’ \
–hue-bind-password ‘Admin1234!’ \
–sssd-bind-dn ‘cn=SSSD,ou=services,dc=example,dc=com’ \
–sssd-bind-password ‘Admin1234!’ \
–重启间隔 30
全参数版本为我们提供了所有自定义选项的完整视角。在以下情况下,您可以更改某些选项的值 :
- 如果要更改默认组织名称
dc=example,dc=com
或默认密码Admin1234!
,请运行全参数版本并将其替换为您自己的值。 - 如果您需要与外部工具集成,即现有的MySQL或Solr,请添加相应的
--skip-xxx-xxx
选项并将其设置为true
。 - 如果您有另一个预定义的 Hue、Ranger 和 SSSD 绑定 DN,请添加相应的
--xxx-bind-dn
和--xxx-bind-password
选项来设置它们。 注意: 安装 Windows AD 时将自动创建 Hue、Ranger 和 SSSD 的绑定 DN,但它们使用以下命名模式进行修复:cn=hue|ranger|sssd,ou=services,<your-base-dn>
,而不是“–xxx-bind-dn”选项的给定值,因此如果使用“–xxx-bind-dn”选项分配另一个 DN,则必须提前自行创建此 DN。此安装不会创建由“–xxx-bind-dn”选项分配的 DN 的原因是 DN 是树路径。要创建它,我们必须在路径中创建所有节点,实现如此小而复杂的功能并不划算。 - 一体化安装将更新 Hue 的 EMR 配置,以便用户可以使用 Windows AD 帐户登录 Hue。如果您有其他自定义的 EMR 配置,请在命令行中附加
--skip-configure-hue 'true'
以跳过更新配置。接下来,手动将 Hue 配置附加到您的 JSON 中;否则,您的预定义配置将被覆盖。
2.3 分步安装
作为替代方法,您也可以选择分步安装,而不是一体式安装。我们为每个步骤提供命令行。有关每个参数的注释,请参阅附录。
2.3
例如,安装 AWS CLI、 JDK 等。
sudo sh ./ranger-emr-cli-installer/bin/setup.sh init-ec2 \
--region "$REGION" \
--access-key-id "$ACCESS_KEY_ID" \
--secret-access-key "$SECRET_ACCESS_KEY"
2.3.2 创建 IAM 角色
此步骤将创建 EMR 所需的三个 IAM 角色。
sudo sh ./ranger-emr-cli-installer/bin/setup.sh create-iam-roles \
--region "$REGION"
2.3.3 创建游侠秘密
此步骤将为 Ranger 创建与 SSL/TLS 相关的密钥、证书和密钥库,因为 EMR 本机 Ranger 需要与服务器的 SSL/TLS 连接。这些构件将上传到 AWS 密钥管理器,并由 EMR 安全配置引用。
sudo sh ./ranger-emr-cli-installer/bin/setup.sh create-ranger-secrets \
--region "$REGION"
2.3.4 创建 EMR 安全配置
此步骤将创建 EMR 安全配置的副本。该配置包括与 Kerberos 和 Ranger 相关的信息。创建集群时,EMR 将读取它们并获取相应的资源,即机密,并与在安全配置中分配地址的 Ranger 服务器进行交互/ranger-emr-cli-installer/bin/setup.sh create-emr-security-configuration \
–区域“$REGION” \
–解决方案 ‘EMR 原生’ \
–身份验证提供程序“广告” \
–信任领域 ‘EXAMPLE.COM’ \
–信任域“example.com” \
–trusting-host ‘example.com’“ data-lang=”text/x-sh“>
sudo sh ./ranger-emr-cli-installer/bin/setup.sh create-emr-security-configuration \
--region "$REGION" \
--solution 'emr-native' \
--auth-provider 'ad' \
--trusting-realm 'EXAMPLE.COM' \
--trusting-domain 'example.com' \
--trusting-host 'example.com'
2.3.5 安装游侠
此步骤将安装Ranger的所有服务器端组件,包括MySQL,Solr,Ranger Admin和Ranger UserSync。
sudo sh ./ranger-emr-cli-installer/bin/setup.sh install-ranger \
--region "$REGION" \
--solution 'emr-native' \
--auth-provider 'ad' \
--ad-domain 'example.com' \
--ad-host "$AD_HOST" \
--ad-base-dn 'cn=users,dc=example,dc=com' \
--ad-user-object-class 'person' \
--ranger-bind-dn 'cn=ranger,ou=services,dc=example,dc=com' \
--ranger-bind-password 'Admin1234!'
2.3.6 安装游侠插件
此步骤将从Ranger服务器端安装EMRFS,Spark和Hive插件。还有另一半工作安装这些插件(实际上它们是 EMR 秘密代理、EMR 记录服务器等)。在代理方面;但是,EMR 将在创建集群时自动完成此操作。
sh 安装游侠插件 \
--区域“$REGION” \
--解决方案 'EMR 原生' \
--身份验证提供程序“广告” \
--ranger-plugins 'emr-native-emrfs,emr-native-spark,emr-native-hive'
2.3.7 创建 EMR 集群
对于分步安装,没有用于创建 EMR 集群的交互式过程,因此请随意在 EMR Web 控制台上创建集群。但是,我们必须等到集群完全就绪(处于“等待”状态),然后导出 EMR 集群 ID:
export EMR_CLUSTER_ID='TO_BE_REPLACED'
以下是该示例的副本:
export EMR_CLUSTER_ID=' j-1UU8LVVVCBZY0'
2.3.8 更新色调配置
此步骤将更新 EMR 的 Hue 配置。如一体式安装中突出显示的那样,如果您有其他自定义的 EMR 配置,请跳过此步骤,但您仍可以通过命令行手动将生成的 Hue 配置的 JSON 文件合并到您自己的 JSON 中。
sudo sh ./ranger-emr-cli-installer/bin/setup.sh update-hue-configuration \
--region "$REGION" \
--auth-provider 'ad' \
--ad-host "$AD_HOST" \
--ad-domain 'example
验证
安装和集成完成后,是时候看看Ranger是否有效了。验证作业分为三个部分,分别针对Hive,EMRFS (S3)和Spark。
首先,我们打开 Ranger Web 控制台,地址是:,默认管理员帐户/密码是:https://<YOUR-RANGER-HOST>:6182
admin/admin
。登录后,我们应该打开“用户/组/角色”页面,查看Windows AD上的示例用户是否同步到Ranger,如下所示:
3.1 配置单元访问控制验证
通常,安装后 Hive 插件有一组预定义的策略。为了消除干扰,请保持验证简单。让我们先删除它们:
Ranger Web 控制台上的任何策略更改都将在 30 秒内同步到代理端(EMR 集群节点)。我们可以在主节点上运行以下命令,查看本地策略文件是否已更新:
removing-all-policies
操作将生效。接下来,使用安装程序创建的 Windows AD 帐户“example-user-1”登录 Hue,打开 Hive 编辑器,输入以下 SQL(请记住将“ranger-test”替换为您自己的存储桶)以创建测试表(将“ranger-test”更改为您自己的存储桶名称):
-- run in hue hive editor
create table ranger_test (
id bigint
)
row format delimited
stored as textfile location 's3://ranger-test/';
接下来,运行它并发生错误:
它显示示例用户 1 被数据库相关权限阻止。这证明 Hive 插件正在工作。让我们返回到 Ranger 并添加一个名为“all - 数据库、表、列”的 Hive 策略,如下所示:
它授予示例用户 1 对所有数据库、表和列的所有权限 更新后,返回 Hue,重新运行该 SQL,此时我们将收到另一个错误:
如图所示,SQL 在读取“s3://ranger-test”时被阻止。 实际上,example-user-1 没有访问任何 URL 的权限,包括“s3://”。 我们需要向此用户授予与 url 相关的权限,因此请再次返回到 Ranger 并添加名为“all - url”的 Hive 策略,如下所示:
它授予示例用户 1 对任何 URL 的所有权限,包括“s3://”。 接下来,再次检查策略文件,切换到 Hue,然后第三次运行该 SQL;它将按以下方式进行:
最后,为了准备下一次 EMRFS/Spark 验证,我们需要在表中插入一些示例数据,并仔细检查示例用户 1 是否对表具有完全读写权限:
insert into ranger_test(id) values(1);
insert into ranger_test(id) values(2);
insert into ranger_test(id) values(3);
select * from ranger_test;
执行结果为:
到目前为止,Hive 访问控制验证已通过。
3.2 EMRFS (S3) 访问控制验证
使用帐户“example-user-1”登录Hue,打开Scala编辑器,然后输入以下Spark代码:
# run in scala editor of hue
spark.read.csv("s3://ranger-test/").show;
这行代码尝试读取 S3 上的文件,但它会遇到以下错误:
它显示示例用户 1 对 S3 存储桶“游侠测试”没有权限。 这证明 EMRFS 插件正在工作。它成功阻止了未经授权的 S3 访问。让我们登录 Ranger 并添加一个名为“all - ranger-test”的 EMRFS 策略,如下所示:
它将授予示例用户 1 对“ranger-test”存储桶的所有权限.10};做
printf “\n%100s\n\n”|tr ' ' '='
sudo stat /emr/secretagent/ranger_policy_cache/emrS3RangerPlugin_emrfs.json
睡眠 3
done“ data-lang=”text/x-sh“>
# run on master node of emr cluster
for i in {1..10}; do
printf "\n%100s\n\n"|tr ' ' '='
sudo stat /emr/secretagent/ranger_policy_cache/emrS3RangerPlugin_emrfs.json
sleep 3
done
更新后,返回 Hue,重新运行以前的 Spark 代码,它将成功如下:
到目前为止,EMRFS 访问控制验证已通过。
3.3 火花访问控制验证
使用帐户“example-user-1”登录Hue,打开Scala编辑器,然后输入以下Spark代码:
# run in scala editor of hue
spark.sql("select * from ranger_test").show
这行代码尝试通过 Spark SQL 运行 ranger_test
表,但它会遇到以下错误:
它显示当前用户对默认数据库没有权限
让我们登录 Ranger 并添加一个名为“all - 数据库、表、列”的 Spark 策略,如下所示:
它将授予示例用户 1 对所有数据库/表/列的所有权限。与检查 Hive 策略文件类似,我们也可以运行以下命令来查看 Spark 策略文件是否已更新:
# run on master node of emr cluster
for i in {1..10}; do
printf "\n%100s\n\n"|tr ' ' '='
sudo stat /etc/emr-record-server/ranger_policy_cache/emrSparkRangerPlugin_spark.json
sleep 3
done
更新后,返回 Hue,重新运行以前的 Spark 代码,它将成功如下:
到目前为止,Spark访问控制验证已通过。
4. 附录
以下是参数规范:
参数 | 注释 |
---|---|
--地区 |
AWS 区域
|
' 这应该是 Windows AD/OpenLDAP 上的现有 DN。根据您的环境进行更改。
此参数是可选的,如果省略,则不会创建示例用户。
例如:“emr-native-emrfs, emr-native-spark, emr-native-hive”,根据您的环境进行更改。