使用接口 VPC 终端节点连接到 Amazon EMR
您可以使用 Virtual Private Cloud(VPC)中的接口 VPC 终端节点(AWS PrivateLink)直接连接到 Amazon EMR,而不是通过互联网连接。当您使用接口 VPC 终端节点时,您的 VPC 和 Amazon EMR 之间的通信完全在 AWS 网络内进行。每个 VPC 终端节点都由您的 VPC 子网中一个或多个使用私有 IP 地址的弹性网络接口(ENI)代表。
接口 VPC 终端节点将您的 VPC 直接连接到 Amazon EMR,而无需互联网网关、NAT 设备、VPN 连接或 AWS Direct Connect 连接。VPC 中的实例不需要公有 IP 地址便可与 Amazon EMR API 进行通信。
要通过您的 VPC 使用 Amazon EMR,您必须从位于 VPC 中的实例进行连接,或者使用 Amazon Virtual Private Network(VPN)或 AWS Direct Connect 将您的专用网络连接到 VPC。有关 Amazon VPN 的信息,请参阅《Amazon Virtual Private Cloud 用户指南》中的 VPN 连接。有关 AWS Direct Connect 连接的更多信息,请参阅在《AWS Direct Connect 用户指南》中的创建连接。
您可以创建接口 VPC 终端节点以使用AWS控制台或 AWS Command Line Interface(AWS CLI)命令连接到 Amazon EMR。有关更多信息,请参阅创建接口终端节点。
在创建接口 VPC 终端节点后,如果您为终端节点启用私有 DNS 主机名,则默认 Amazon EMR 终端节点将解析为您的 VPC 终端节点。Amazon EMR 的默认服务名称终端节点采用以下格式。
elasticmapreduce.
Region
.amazonaws.com
如果您不启用私有 DNS 主机名,Amazon VPC 将提供一个您可以使用的 DNS 终端节点名称,格式如下。
VPC_Endpoint_ID
.elasticmapreduce.Region
.vpce.amazonaws.com
有关更多信息,请参阅《Amazon VPC 用户指南》 中的接口 VPC 终端节点(AWS PrivateLink)。
Amazon EMR 支持调用您的 VPC 中的所有 API 操作。
您可以将 VPC 终端节点策略附加到 VPC 终端节点,以控制 IAM 委托人的访问权限。您还可以将安全组与 VPC 终端节点关联,以便根据网络流量的源和目标(例如 IP 地址范围)控制入站和出站访问。有关更多信息,请参阅使用 VPC 终端节点控制对服务的访问。
为 Amazon EMR 创建 VPC 终端节点策略
您可以为 Amazon EMR 的 Amazon VPC 终端节点创建一个策略,在该策略中指定以下内容:
-
可以或不能执行操作的委托人
-
可执行的操作
-
可对其执行操作的资源
有关更多信息,请参阅《Amazon VPC 用户指南》中的使用 VPC 终端节点控制对服务的访问权限。
例 – 用于拒绝来自指定AWS账户的所有访问的 VPC 终端节点策略
以下 VPC 终端节点策略拒绝 AWS 账户 123456789012
所有使用终端节点访问资源的权限。
{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "*", "Effect": "Deny", "Resource": "*", "Principal": { "AWS": [ "
123456789012
" ] } } ] }
例 – 仅允许 VPC 访问指定的 IAM 委托人(用户)的 VPC 终端节点策略
以下 VPC 端点策略仅允许对 AWS 账户 123456789012
中的用户 lijuan
进行完全访问。使用终端节点拒绝所有其它 IAM 委托人进行访问。
{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "arn:aws:iam::
123456789012
:user/lijuan
" ] } }] }
例 – 允许只读 EMR 操作的 VPC 终端节点策略
以下 VPC 终端节点策略仅允许AWS账户 123456789012
执行指定的 Amazon EMR 操作。
指定的操作为 Amazon EMR 提供等效的只读访问权限。针对指定账户拒绝 VPC 上的所有其它操作。所有其它帐户都被拒绝进行任何访问。有关 Amazon EMR 操作的列表,请参阅 Amazon EMR 的操作、资源和条件键。
{ "Statement": [ { "Action": [ "elasticmapreduce:DescribeSecurityConfiguration", "elasticmapreduce:GetBlockPublicAccessConfiguration", "elasticmapreduce:ListBootstrapActions", "elasticmapreduce:ViewEventsFromAllClustersInConsole", "elasticmapreduce:ListSteps", "elasticmapreduce:ListInstanceFleets", "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:DescribeStep", "elasticmapreduce:ListInstances", "elasticmapreduce:ListSecurityConfigurations", "elasticmapreduce:DescribeEditor", "elasticmapreduce:ListClusters", "elasticmapreduce:ListEditors" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "
123456789012
" ] } } ] }
例 – 拒绝访问指定集群的 VPC 终端节点策略
以下 VPC 终端节点策略允许对所有账户和委托人进行完全访问,但拒绝AWS账户 123456789012
访问在集群 ID 为 j-A1B2CD34EF5G
的 Amazon EMR 集群上执行的操作。仍然允许其它不支持集群资源级权限的 Amazon EMR 操作。有关 Amazon EMR 操作及其相应资源类型的列表,请参阅 Amazon EMR 的操作、资源和条件键。
{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "*", "Effect": "Deny", "Resource": "arn:aws:elasticmapreduce:
us-west-2
:123456789012
:cluster/j-A1B2CD34EF5G
", "Principal": { "AWS": [ "123456789012
" ] } } ] }