

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon EMR 中的安全性
<a name="emr-security"></a>

安全与合规是您共同承担的责任 AWS。这种分担责任模式可以帮助您减轻运营负担，因为您可以 AWS 操作、管理和控制从主机操作系统和虚拟化层到运行 EMR 集群的设施的物理安全的组件。您负责管理和更新 Amazon EMR 集群，以及配置应用程序软件和 AWS 提供的安全控制。这种责任划分通常称为云*的*安全性和云*中*安全性。
+ 云安全 — AWS 负责保护运行 AWS 服务 在云中的基础架构 AWS。 AWS 还为您提供可以安全使用的服务。作为 [AWS 合规性计划](https://aws.amazon.com/compliance/programs/)的一部分，第三方审核人员将定期测试和验证安全性的有效性。要了解适用于 Amazon EMR 的合规性计划，请参阅[合规性计划范围内的AWS 服务 服务](https://aws.amazon.com/compliance/services-in-scope/)。
+ 云中安全型：您还负责执行所有必要的安全配置和管理任务，以保护 Amazon EMR 集群。部署 Amazon EMR 集群的客户负责管理安装在实例上的应用程序软件，并根据您的要求、适用的法律和法规配置 AWS提供的功能，例如安全组、加密和访问控制。

该文档帮助您了解如何在使用 Amazon EMR 时应用责任共担模式。本章中的主题演示了如何配置 Amazon EMR 并使用其他 AWS 服务 服务，以实现您的安全性和合规性目标。

## 网络和基础设施安全性
<a name="w2aac30b9"></a>

作为一项托管服务，Amazon EMR 受[亚马逊网络服务：安全流程概述白皮书中描述的 AWS 全球网络安全程序的](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf)保护。 AWS 网络和基础架构保护服务可在主机和网络级边界为您提供精细的保护。Amazon EMR 支持 AWS 服务 和应用程序功能可满足您的网络保护和合规要求。
+ **Amazon EC2 安全组**充当 Amazon EMR 集群实例的虚拟防火墙，可限制入站和出站网络流量。有关更多信息，请参阅[使用安全组控制网络流量](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-groups.html)。
+ 如果集群的安全配置允许来自公有 IP 地址的入站流量通过某个端口，**Amazon EMR 阻止公有访问（BPA）**会阻止您在公有子网中启动该集群。有关更多信息，请参阅[使用 Amazon EMR 阻止公有访问](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-block-public-access.html)。
+ **Secure Shell（SSH）**为用户提供了安全连接到集群实例上命令行的方式。您还可以使用 SSH 查看应用程序在集群主节点上托管的 Web 界面。有关更多信息，请参阅[对 SSH 凭证使用 EC2 密钥对](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-access-ssh.html)和[连接到集群](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node.html)。

## 更新适用于 Amazon EMR 的默认 Amazon Linux AMI
<a name="w2aac30c11"></a>

**重要**  
运行 Amazon Linux 或 Amazon Linux 2 亚马逊机器映像（AMI）的 EMR 集群使用默认的 Amazon Linux 行为，且不会自动下载和安装需要重新启动的重要关键内核更新。这与运行默认 Amazon Linux AMI 的其它 Amazon EC2 实例的行为相同。如果需要重新启动的新 Amazon Linux 软件更新（例如内核、NVIDIA 和 CUDA 更新）在 Amazon EMR 版本发布后可用，则运行默认 AMI 的 EMR 集群实例不会自动下载和安装这些更新。要获取内核更新，您可以[自定义 Amazon EMR AMI](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html)，以[使用最新的 Amazon Linux AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html)。

根据您的应用程序的安全状况和集群运行的时长，您可选择定期重启集群以应用安全更新，或创建引导操作以自定义软件包安装和更新。也可以选择在正在运行的集群实例上测试然后安装所选安全更新。有关更多信息，请参阅 [在 Amazon EMR 使用默认的 Amazon Linux AMI](emr-default-ami.md)。请注意，您的联网配置必须允许 HTTP 和 HTTPS 传出到 Amazon S3 中的 Linux 存储库，否则安全更新将会失败。

## AWS Identity and Access Management 使用亚马逊 EMR
<a name="w2aac30c13"></a>

AWS Identity and Access Management (IAM) 是一项 AWS 服务，可帮助管理员安全地控制对 AWS 资源的访问。IAM 管理员控制谁可以通过*身份验证*（登录）和*授权*（具有权限）使用 Amazon EMR 资源。IAM 身份包括用户、组和角色。IAM 角色与 IAM 用户类似，但与特定人员不关联，任何需要权限的用户都可以代入该角色。有关更多信息，请参阅 [AWS Identity and Access Management for Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-access-iam.html)。Amazon EMR 使用多个 IAM 角色来帮助您实现 Amazon EMR 集群的访问控制。IAM 是一项无需额外付费即可使用的 AWS 服务。
+ **亚马逊 EMR 的 IAM 角色（EMR 角色）**— 控制亚马逊 EMR 服务如何代表您访问其他人，例如 AWS 服务 在亚马逊 EMR 集群启动时预配置 Amazon EC2 实例。有关更多信息，请参阅[配置 IAM 服务角色以获得 Amazon EMR 访问 AWS 服务 和资源的权限](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html)。
+ **集群 EC2 实例的 IAM 角色（EC2 实例配置文件）**：实例启动时分配给 Amazon EMR 集群中每个 EC2 实例的角色。在集群上运行的应用程序进程使用此角色与其他 AWS 服务进程（例如 Amazon S3）进行交互。有关更多信息，请参阅[集群 EC2 实例的 IAM 角色](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html)。
+ **应用程序的 IAM 角色（运行时角色）**：您可以在向 Amazon EMR 集群提交作业或查询时指定的 IAM 角色。您提交到 Amazon EMR 集群的任务或查询使用运行时角色访问 AWS 资源，例如 Amazon S3 中的对象。您可以使用 Amazon EMR 为 Spark 和 Hive 作业指定运行时角色。通过使用运行时角色，您可以使用不同的 IAM 角色隔离在同一集群上运行的任务。有关更多信息，请参阅[使用 IAM 角色作为 Amazon EMR 的运行时角色](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-steps-runtime-roles.html)。

员工身份是指在中构建或操作工作负载的用户 AWS。Amazon EMR 通过以下方式为员工身份提供支持：
+ AWS 建议@@ **使用 IAM 身份中心 (Idc)** 来管理用户 AWS 服务 对 AWS 资源的访问权限。在这里，您可以分配员工身份，一致地访问多个 AWS 账户和应用程序。Amazon EMR 通过受信任身份传播支持员工身份。借助可信身份传播功能，用户可以登录应用程序，该应用程序可以将用户的身份传递给其他人， AWS 服务 以授权访问数据或资源。有关更多信息，请参阅[使用 Amazon EMR 启用对AWS IAM identity center 的支持](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-idc.html)。

  **轻型目录访问协议（LDAP）**是一种开放、供应商中立的行业标准应用程序协议，用于通过网络访问和维护有关用户、系统、服务和应用程序的信息。LDAP 通常用于针对 Active Directory（AD）和 OpenLDAP 等企业身份服务器进行用户身份验证。通过在 EMR 集群中启用 LDAP，您可以允许用户使用其现有凭证进行身份验证和访问集群。有关更多信息，请参阅[使用 Amazon EMR 启用对 LDAP 的支持](https://docs.aws.amazon.com/emr/latest/ManagementGuide/ldap.html)。

  **Kerberos** 是一种网络身份验证协议，旨在通过使用密钥加密为 client/server 应用程序提供强大的身份验证。在使用 Kerberos 时，Amazon EMR 会为集群上安装的应用程序、组件和子系统配置 Kerberos，使其能够相互进行身份验证。要访问配置了 Kerberos 的集群，Kerberos 域控制器（KDC）中必须存在 kerberos 主体。有关更多信息，请参阅[使用 Amazon EMR 启用对 Kerberos 的支持](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)。

### 单租户和多租户集群
<a name="w2aac30c13c11"></a>

默认情况下，集群配置为单个租户，将 EC2 实例配置文件作为 IAM 身份。在单租户集群中，每个任务都具有对集群的完全和完全访问权限，并且对所有 AWS 服务 和资源的访问权限是基于 EC2 实例配置文件完成的。在多租户集群中，租户彼此隔离，租户无法完全访问集群和集群的 EC2 实例。多租户集群上的身份要么是运行时角色，要么是员工身份。在多租户集群中，您还可以通过或 Apache Ranger 启用对细粒度访问控制 (FGAC) 的支持。 AWS Lake Formation 对于启用了运行时角色或 FGAC 的集群，也可以通过 iptables 禁用对 EC2 实例配置文件的访问。

**重要**  
任何有权访问单租户集群的用户都可以在 Linux 操作系统（OS）上安装任何软件，更改或删除 Amazon EMR 安装的软件组件，并影响集群中的 EC2 实例。如果要确保用户无法安装或更改 Amazon EMR 集群的配置，建议您为集群启用多租户。通过启用对运行时角色、 AWS IAM identity center、Kerberos 或 LDAP 的支持，在集群上启用多租户。

## 数据保护
<a name="w2aac30c15"></a>

使用 AWS，您可以通过使用 AWS 服务 和工具来控制数据，以确定如何保护数据以及谁有权访问数据。诸如 AWS Identity and Access Management (IAM) 之类的服务可让您安全地管理对 AWS 服务 资源的访问权限。 AWS CloudTrail 启用检测和审计。借助 Amazon EMR，您可以使用由您管理 AWS 或完全由您管理的密钥轻松加密 Amazon S3 中的静态数据。Amazon EMR 还支持对传输中数据启用加密。有关更多信息，请参阅[加密静态数据和传输中数据](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption.html)。

### 数据访问控制
<a name="w2aac30c15b5"></a>

通过数据访问控制，您可以控制 IAM 身份或员工身份可以访问的数据。Amazon EMR 支持以下访问控制：
+ **基于 IAM 身份的策略**：管理您在 Amazon EMR 中使用的 IAM 角色的权限。IAM 策略可以与标记相结合，以 cluster-by-cluster逐一控制访问权限。有关更多信息，请参阅 [AWS Identity and Access Management for Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-access-iam.html)。
+ **AWS Lake Formation** 集中管理数据的权限，使其更易于在组织内部和外部共享。您可以使用 Lake Formation 对 Gl AWS ue 数据目录中的数据库和表进行精细的列级访问。有关更多信息，请参阅[将 AWS Lake Formation 与 Amazon EMR 结合使用](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-lake-formation.html)。
+ **Amazon S3 访问权限授予**映射身份将活动目录或 AWS Identity and Access Management (IAM) 委托人等目录中的身份映射到 S3 中的数据集。此外，S3 access grants 还会记录最终用户身份以及用于访问 AWS CloudTrail中 S3 数据的应用程序。有关更多信息，请参阅[将 Amazon S3 访问权限管控与 Amazon EMR 结合使用](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-access-grants.html)。
+ **Apache Ranger** 是一个框架，可跨 Hadoop 平台启用、监控和管理全面的数据安全。Amazon EMR 支持针对 Apache Hive Metastore 和 Amazon S3 的基于 Apache Ranger 的精细访问控制。有关更多信息，请参阅[将 Apache Ranger 与 Amazon EMR 集成](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ranger.html)。