Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

创建安全配置

本主题介绍使用 EMR 控制台和 AWS CLI 创建安全配置的一般过程,并介绍有关加密、身份验证和 EMRFS 的 IAM 角色的参数的参考信息。有关这些功能的更多信息,请参阅以下主题:

使用控制台创建安全配置

  1. 通过以下网址打开 Amazon EMR 控制台:https://console.amazonaws.cn/elasticmapreduce/

  2. 在导航窗格中,选择 Security Configurations (安全配置)Create security configuration (创建安全配置)

  3. 键入安全配置的 Name (名称)

  4. 按照以下部分中所述选择 Encryption (加密)Authentication (身份认证) 的选项,然后选择 Create (创建)

使用 AWS CLI 创建安全配置

  • 使用 create-security-configuration 命令,如以下示例所示。

    • 对于 SecConfigName,指定安全配置的名称。这是您在创建使用此安全配置的集群时指定的名称。

    • 对于 SecConfigDef,指定内联 JSON 结构或本地 JSON 文件的路径,例如 file://MySecConfig.json。JSON 参数定义 Encryption (加密)IAM Roles for EMRFS access to Amazon S3 (用于处理 EMRFS 对 Amazon S3 的访问的 IAM 角色)Authentication (身份验证) 的选项,如下面部分所述。

    aws emr create-security-configuration --name "SecConfigName" --security-configuration SecConfigDef

配置数据加密

在配置安全配置中的加密之前,创建用于加密的密钥和证书。有关更多信息,请参阅 提供通过 Amazon EMR 加密静态数据的密钥为通过 Amazon EMR 加密来加密传输中的数据提供证书

在创建安全配置时,需要指定两组加密选项:静态数据加密和传输中数据加密。静态数据加密选项包括带有 EMRFS 的 Amazon S3 和本地磁盘加密。传输中加密选项为支持传输层安全性 (TLS) 的某些应用程序启用开源加密功能。静态选项和传输中选项可以同时启用或分别启用。有关更多信息,请参阅加密静态数据和传输中的数据

使用控制台指定加密选项

根据以下准则选择 Encryption (加密) 下的选项。

  • 选择静态加密下的选项以加密存储在文件系统中的数据。

    您可以选择加密 Amazon S3 和/或本地磁盘中的数据。

  • S3 data encryption (S3 数据加密) 下,为 Encryption mode (加密模式) 选择一个值以确定 Amazon EMR 如何使用 EMRFS 加密 Amazon S3 数据。

    下一步取决于所选的加密模式:

  • Local disk encryption (本地磁盘加密) 下,为 Key provider type (密钥提供程序类型) 选择一个值。

    • AWS KMS

      选择此选项可指定 AWS KMS 客户主密钥 (CMK)。对于 AWS KMS 客户主密钥,选择一个密钥。该密钥必须与您的 EMR 集群同在一个区域中。有关密钥要求的更多信息,请参阅使用 AWS KMS 客户主密钥 (CMK) 进行加密

      EBS 加密

      当您指定 AWS KMS 作为密钥提供程序时,可以启用 EBS 加密来加密 EBS 根设备和存储卷。要启用此选项,您必须授予 EMR 服务角色 EMR_DefaultRole,该角色有权使用您指定的客户主密钥 (CMK)。有关密钥要求的更多信息,请参阅通过为 AWS KMS CMK 提供附加权限来启用 EBS 加密

    • Custom (自定义)

      选择此选项可指定自定义密钥提供程序。对于 S3 object (S3 对象),输入您的自定义密钥提供程序 JAR 文件在 Amazon S3 中或 Amazon S3 ARN 的位置。对于 Key provider class (密钥提供程序类别),输入在实现 EncryptionMaterialsProvider 接口的应用程序中声明的类的完整类名。这里提供的类名必需与为 CSE-Custom 提供的类名不同。

  • 选择 In-transit encryption (传输中加密) 为传输中的数据启用开源 TLS 加密功能。根据以下指南选择 Certificate provider type (证书提供程序类型)

    • PEM

      选择此选项将使用您在 zip 文件中提供的 PEM 文件。zip 文件中需要有两个构件:privateKey.pem 和 certificateChain.pem。第三个文件 trustedCertificates.pem 是可选文件。有关详细信息,请参阅 为通过 Amazon EMR 加密来加密传输中的数据提供证书。对于 S3 object (S3 对象),指定zip 文件字段在 Amazon S3 中或 Amazon S3 ARN 的位置。

    • Custom (自定义)

      选择此选项可指定一个自定义证书提供程序,然后在 S3 object (S3 对象) 中输入您的自定义证书提供程序 JAR 文件在 Amazon S3 中或 Amazon S3 ARN 的位置。对于 Key provider class (密钥提供程序类别),输入在实现 TLSArtifactsProvider 接口的应用程序中声明的类的完整类名。

使用 AWS CLI 指定加密选项

下面部分使用示例方案,说明对不同配置和密钥提供程序的正确 --security-configuration JSON 格式,再提供 JSON 参数和相应值的参考信息。

传输中数据加密选项示例

下面的示例将说明以下情景:

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : true, "EnableAtRestEncryption" : false, "InTransitEncryptionConfiguration" : { "TLSCertificateConfiguration" : { "CertificateProviderType" : "PEM", "S3Object" : "s3://MyConfigStore/artifacts/MyCerts.zip" } } } }'

下面的示例将说明以下情景:

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : true, "EnableAtRestEncryption" : false, "InTransitEncryptionConfiguration" : { "TLSCertificateConfiguration" : { "CertificateProviderType" : "Custom", "S3Object" : "s3://MyConfig/artifacts/MyCerts.jar", "CertificateProviderClass" : "com.mycompany.MyCertProvider" } } } }'

静态数据加密选项示例

下面的示例将说明以下情景:

  • 传输中的数据加密已禁用,而静态数据加密已启用。

  • SSE-S3 已用于 Amazon S3 加密。

  • 本地磁盘加密使用 AWS KMS 作为密钥提供程序。

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : false, "EnableAtRestEncryption" : true, "AtRestEncryptionConfiguration" : { "S3EncryptionConfiguration" : { "EncryptionMode" : "SSE-S3" }, "LocalDiskEncryptionConfiguration" : { "EncryptionKeyProviderType" : "AwsKms", "AwsKmsKey" : "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }'

下面的示例将说明以下情景:

  • 传输中数据加密已启用且使用 ARN 引用了 Amazon S3 中包含 PEM 证书的 ZIP 文件。

  • SSE-KMS 已用于 Amazon S3 加密。

  • 本地磁盘加密使用 AWS KMS 作为密钥提供程序。

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : true, "EnableAtRestEncryption" : true, "InTransitEncryptionConfiguration" : { "TLSCertificateConfiguration" : { "CertificateProviderType" : "PEM", "S3Object" : "arn:aws:s3:::MyConfigStore/artifacts/MyCerts.zip" } }, "AtRestEncryptionConfiguration" : { "S3EncryptionConfiguration" : { "EncryptionMode" : "SSE-KMS", "AwsKmsKey" : "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" }, "LocalDiskEncryptionConfiguration" : { "EncryptionKeyProviderType" : "AwsKms", "AwsKmsKey" : "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }'

下面的示例将说明以下情景:

  • 传输中数据加密已禁用且引用了 Amazon S3 中包含 PEM 证书的 ZIP 文件。

  • CSE-KMS 已用于 Amazon S3 加密。

  • 本地磁盘加密使用了通过其 ARN 引用的自定义密钥提供程序。

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : true, "EnableAtRestEncryption" : true, "InTransitEncryptionConfiguration" : { "TLSCertificateConfiguration" : { "CertificateProviderType" : "PEM", "S3Object" : "s3://MyConfigStore/artifacts/MyCerts.zip" } }, "AtRestEncryptionConfiguration" : { "S3EncryptionConfiguration" : { "EncryptionMode" : "CSE-KMS", "AwsKmsKey" : "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" }, "LocalDiskEncryptionConfiguration" : { "EncryptionKeyProviderType" : "Custom", "S3Object" : "arn:aws:s3:::artifacts/MyKeyProvider.jar", "EncryptionKeyProviderClass" : "com.mycompany.MyKeyProvider.jar" } } } }'

下面的示例将说明以下情景:

  • 利用自定义密钥提供程序启用了传输中的数据加密。

  • CSE-Custom 已用于 Amazon S3 数据。

  • 本地磁盘加密使用了自定义密钥提供程序。

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : "true", "EnableAtRestEncryption" : "true", "InTransitEncryptionConfiguration" : { "TLSCertificateConfiguration" : { "CertificateProviderType" : "Custom", "S3Object" : "s3://MyConfig/artifacts/MyCerts.jar", "CertificateProviderClass" : "com.mycompany.MyCertProvider" } }, "AtRestEncryptionConfiguration" : { "S3EncryptionConfiguration" : { "EncryptionMode" : "CSE-Custom", "S3Object" : "s3://MyConfig/artifacts/MyCerts.jar", "EncryptionKeyProviderClass" : "com.mycompany.MyKeyProvider" }, "LocalDiskEncryptionConfiguration" : { "EncryptionKeyProviderType" : "Custom", "S3Object" : "s3://MyConfig/artifacts/MyCerts.jar", "EncryptionKeyProviderClass" : "com.mycompany.MyKeyProvider" } } } }'

下面的示例将说明以下情景:

  • 传输中的数据加密已禁用,而静态数据加密已启用。

  • 通过 SSE-KMS 启用了 Amazon S3 加密,并且加密例外应用到了单独的 S3 存储桶。

  • 本地磁盘加密已禁用。

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "AtRestEncryptionConfiguration": { "S3EncryptionConfiguration": { "EncryptionMode" : "SSE-KMS", "AwsKmsKey" : "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012", "Overrides" : [ { "BucketName" : "sse-s3-bucket-name", "EncryptionMode" : "SSE-S3" }, { "BucketName" : "cse-kms-bucket-name", "EncryptionMode" : "CSE-KMS", "AwsKmsKey" : "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" }, { "BucketName" : "sse-kms-bucket-name", "EncryptionMode" : "SSE-KMS", "AwsKmsKey" : "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } ] } }, "EnableInTransitEncryption": false, "EnableAtRestEncryption": true } }'

下面的示例将说明以下情景:

  • 传输中的数据加密已禁用,而静态数据加密已启用。

  • 通过 SSE-S3 启用了 Amazon S3 加密,并且本地磁盘加密已禁用。

aws emr create-security-configuration --name "MyS3EncryptionConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : false, "EnableAtRestEncryption" : true, "AtRestEncryptionConfiguration" : { "S3EncryptionConfiguration" : { "EncryptionMode" : "SSE-S3" } } } }'

下面的示例将说明以下情景:

  • 传输中的数据加密已禁用,而静态数据加密已启用。

  • 本地磁盘加密已启用并将 AWS KMS 作为密钥提供程序,Amazon S3 加密已禁用。

aws emr create-security-configuration --name "MyLocalDiskEncryptionConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : false, "EnableAtRestEncryption" : true, "AtRestEncryptionConfiguration" : { "LocalDiskEncryptionConfiguration" : { "EncryptionKeyProviderType" : "AwsKms", "AwsKmsKey" : "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }'

下面的示例将说明以下情景:

  • 传输中的数据加密已禁用,而静态数据加密已启用。

  • 本地磁盘加密已启用并将 AWS KMS 作为密钥提供程序,Amazon S3 加密已禁用。

  • EBS 加密已启用。

aws emr create-security-configuration --name "MyLocalDiskEncryptionConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : false, "EnableAtRestEncryption" : true, "AtRestEncryptionConfiguration" : { "LocalDiskEncryptionConfiguration" : { "EnableEbsEncryption" : true, "EncryptionKeyProviderType" : "AwsKms", "AwsKmsKey" : "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }'

加密设置的 JSON 引用

下表列出了用于加密设置的 JSON 参数并提供了每个参数的可接受值描述。

参数 描述
"EnableInTransitEncryption" : true | false 指定 true 可启用传输中加密,指定 false 则禁用。如果省略,则假定是 false,传输中加密禁用。
"EnableAtRestEncryption" : true | false 指定 true 可启用静态加密,指定 false 则禁用。如果省略,则假定是 false,静态加密禁用。
传输中加密参数
"InTransitEncryptionConfiguration" : 指定当 EnableInTransitEncryptiontrue 时用于配置传输中加密的值的集合。
"CertificateProviderType" : "PEM" | "Custom" 指定是使用通过压缩文件引用的 PEM 证书还是使用 Custom 证书提供程序。如果指定 PEM,则 S3Object 必须是对包含证书的 zip 文件在 Amazon S3 中的位置的引用。如果指定“Custom (自定义)”,则 S3Object 必须是对 JAR 文件在 Amazon S3 中的位置的引用,后跟一个 CertificateProviderClass 条目。
"S3Object" : "ZipLocation" | "JarLocation" 如果指定 PEM,则提供 zip 文件在 Amazon S3 中的位置,如果指定 Custom,则提供 JAR 文件的位置。格式可以是路径 (例如,s3://MyConfig/artifacts/CertFiles.zip) 或 ARN (例如,arn:aws:s3:::Code/MyCertProvider.jar)。如果指定 zip 文件,则其中必须包含名为 privateKey.pemcertificateChain.pem 的文件。名为 trustedCertificates.pem 的文件是可选的。
"CertificateProviderClass" : "MyClassID" 仅当为 CertificateProviderType 指定 Custom 时才是必需的。MyClassID 指定在实现 TLSArtifactsProvider 接口的 JAR 文件中声明的完整类名。例如:com.mycompany.MyCertProvider
静态加密参数
"AtRestEncryptionConfiguration" : 指定当 EnableAtRestEncryptiontrue 时用于配置静态加密(包括 Amazon S3 加密和本地磁盘加密)的值的集合。
Amazon S3 加密参数
"S3EncryptionConfiguration" : 指定用于 EMR 文件系统 (EMRFS) Amazon S3 加密的值的集合。
"EncryptionMode" : "SSE-S3" | "SSE-KMS" | "CSE-KMS" | "CSE-Custom" 指定要使用的 Amazon S3 加密类型。如果指定 SSE-S3,则无需再提供 Amazon S3 加密值。如果指定 SSE-KMSCSE-KMS,则必须指定 AWS KMS 客户主密钥 (CMK) ARN 作为 AwsKmsKey 值。如果指定 CSE-Custom,则必需指定 S3ObjectEncryptionKeyProviderClass 值。
"AwsKmsKey" : "MyKeyARN" 仅当为 EncryptionMode 指定 SSE-KMSCSE-KMS 时才是必需的。MyKeyARN 必须是密钥的完全指定 ARN(例如,arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012)。
"S3Object" : "JarLocation" 仅当为 CertificateProviderType 指定 CSE-Custom 时才是必需的。JarLocation 提供 JAR 文件在 Amazon S3 中的位置。格式可以是路径 (例如,s3://MyConfig/artifacts/MyKeyProvider.jar) 或 ARN (例如,arn:aws:s3:::Code/MyKeyProvider.jar)
"EncryptionKeyProviderClass" : "MyS3KeyClassID" 仅当为 EncryptionMode 指定 CSE-Custom 时才是必需的。MyS3KeyClassID 指定在实现 EncryptionMaterialsProvider 接口的应用程序中声明的类的完整类名,例如,com.mycompany.MyS3KeyProvider
本地磁盘加密参数
"LocalDiskEncryptionKeyProvider" 指定要用于本地磁盘加密的密钥提供程序和相应的值。
"Type" : "AwsKms" | "Custom" 指定密钥提供程序。如果指定 AwsKms,则必须指定 AWS KMS CMK ARN 作为 AwsKmsKey 值。如果指定 Custom,则必需指定 S3ObjectEncryptionKeyProviderClass 值。
"AwsKmsKey : "MyKeyARN" 仅当为 Type 指定 AwsKms 时才是必需的。MyKeyARN 必须是密钥的完全指定 ARN(例如, arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-456789012123)。
"S3Object" : "JarLocation" 仅当为 CertificateProviderType 指定 CSE-Custom 时才是必需的。JarLocation 提供 JAR 文件在 Amazon S3 中的位置。格式可以是路径 (例如,s3://MyConfig/artifacts/MyKeyProvider.jar) 或 ARN (例如,arn:aws:s3:::Code/MyKeyProvider.jar)

"EncryptionKeyProviderClass" : "MyLocalDiskKeyClassID"

仅当为 Type 指定 Custom 时才是必需的。MyLocalDiskKeyClassID 指定在实现 EncryptionMaterialsProvider 接口的应用程序中声明的类的完整类名,例如,com.mycompany.MyLocalDiskKeyProvider

配置 Kerberos 身份验证

包含 Kerberos 设置的安全配置只能由使用 Kerberos 属性创建的集群使用,否则会发生错误。有关更多信息,请参阅 使用 Kerberos 身份验证。仅在 Amazon EMR 发行版 5.10.0 及更高版本中提供了 Kerberos。

使用控制台指定 Kerberos 设置

根据以下准则选择 Kerberos authentication (Kerberos 身份验证) 下的选项。

参数 描述

Kerberos

指定对使用此安全配置的集群启用 Kerberos。如果集群使用此安全配置,则集群还必须指定 Kerberos 设置,否则会发生错误。

提供商

集群专用 KDC

指定 Amazon EMR 在使用此安全配置的任意集群的主节点上创建 KDC。您在创建集群时指定领域名称和 KDC 管理员密码。

如果需要,您可从其他集群引用此 KDC。使用不同安全配置创建这些集群,指定外部 KDC,并使用领域名称和您为集群专用 KDC 指定的 KDC 管理员密码。

外部 KDC

可用于 Amazon EMR 5.20.0 和更高版本。指定使用此安全配置的集群通过集群外部的 KDC 服务器对 Kerberos 委托人进行身份验证。未在集群中创建 KDC。当您创建集群时,为外部 KDC 指定领域名称和 KDC 管理员密码。

票证使用期限

可选。指定在使用此安全配置的集群上,由 KDC 颁发的 Kerberos 票证的有效期间。

出于安全考虑,限制票证生命周期。集群应用程序和服务在过期后自动续订票证。使用 Kerberos 凭证通过 SSH 连接到集群的用户在票证过期后需要从主节点命令行运行 kinit 来续订。

跨领域信任

指定使用此安全配置的集群上的集群专用 KDC 与不同 Kerberos 领域中的一个 KDC 之间的跨领域信任。

来自另一个领域的委托人(通常是用户)将对使用此配置的集群进行身份验证。需要其他 Kerberos 领域中的其他配置。有关更多信息,请参阅 教程:配置与 Active Directory 域的跨领域信任

跨领域信任属性

领域

指定信任关系中其他领域的 Kerberos 领域名称。按照约定,Kerberos 领域名称与域名相同,但使用全大写。

指定信任关系中其他领域的域名。

管理服务器

指定信任关系的其他领域中的管理服务器的完全限定域名 (FQDN) 或 IP 地址。管理服务器和 KDC 服务器通常运行在具有相同 FQDN 的同一台计算机上,但通过不同的端口进行通信。

如果未指定端口,则使用端口 749,这是 Kerberos 默认值。另外,您还可以指定端口(例如,domain.example.com:749)。

KDC 服务器

指定信任关系的其他领域中的 KDC 服务器的完全限定域名 (FQDN) 或 IP 地址。KDC 服务器和管理服务器通常运行在具有相同 FQDN 的同一台计算机上,但使用不同的端口。

如果未指定端口,则使用端口 88,这是 Kerberos 默认值。另外,您还可以指定端口(例如,domain.example.com:88)。

外部 KDC

指定集群外部 KDC 由集群使用。

外部 KDC 属性

管理服务器

指定外部管理服务器的完全限定域名 (FQDN) 或 IP 地址。管理服务器和 KDC 服务器通常运行在具有相同 FQDN 的同一台计算机上,但通过不同的端口进行通信。

如果未指定端口,则使用端口 749,这是 Kerberos 默认值。另外,您还可以指定端口(例如,domain.example.com:749)。

KDC 服务器

指定外部 KDC 服务器的完全限定域名 (FQDN)。KDC 服务器和管理服务器通常运行在具有相同 FQDN 的同一台计算机上,但使用不同的端口。

如果未指定端口,则使用端口 88,这是 Kerberos 默认值。另外,您还可以指定端口(例如,domain.example.com:88)。

Active Directory 集成

指定 Kerberos 委托人身份验证与 Microsoft Active Directory 域集成。

Active Directory 集成属性

Active Directory 领域

指定 Active Directory 域的 Kerberos 领域名称。按照约定,Kerberos 领域名称通常与域名相同,但使用全大写。

Active Directory 域

指定 Active Directory 域名。

Active Directory 服务器

指定 Microsoft Active Directory 域控制器的完全限定域名 (FQDN)。

使用 AWS CLI 指定 Kerberos 设置

以下参考表显示了安全配置中 Kerberos 设置的 JSON 参数。有关示例配置,请参阅配置示例

参数 描述

"AuthenticationConfiguration": {

对 Kerberos 必需。指定身份验证配置属于安全配置的一部分。

"KerberosConfiguration": {

对 Kerberos 必需。指定 Kerberos 配置属性。

"Provider": "ClusterDedicatedKdc",

"Provider: "ExternalKdc",

ClusterDedicatedKdc 指定 Amazon EMR 在使用此安全配置的任意集群的主节点上创建 KDC。您在创建集群时指定领域名称和 KDC 管理员密码。如果需要,您可从其他集群引用此 KDC。使用不同安全配置创建这些集群,指定外部 KDC,并使用领域名称和您在通过集群专用 KDC 创建集群时指定的 KDC 管理员密码。

ExternalKdc 指定集群使用外部 KDC。Amazon EMR 不在主节点上创建 KDC。使用此安全配置的集群必须指定领域名称和外部 KDC 的 KDC 管理员密码。

"ClusterDedicatedKdcConfiguration": {

在指定 ClusterDedicatedKdc 时是必需的.

"TicketLifetimeInHours": 24,

可选。指定在使用此安全配置的集群上,由 KDC 颁发的 Kerberos 票证的有效期间。

出于安全考虑,限制票证生命周期。集群应用程序和服务在过期后自动续订票证。使用 Kerberos 凭证通过 SSH 连接到集群的用户在票证过期后需要从主节点命令行运行 kinit 来续订。

"CrossRealmTrustConfiguration": {

指定使用此安全配置的集群上的集群专用 KDC 与不同 Kerberos 领域中的一个 KDC 之间的跨领域信任。

来自另一个领域的委托人(通常是用户)将对使用此配置的集群进行身份验证。需要其他 Kerberos 领域中的其他配置。有关更多信息,请参阅 教程:配置与 Active Directory 域的跨领域信任

"Realm": "KDC2.COM",

指定信任关系中其他领域的 Kerberos 领域名称。按照约定,Kerberos 领域名称与域名相同,但使用全大写。

"Domain": "kdc2.com",

指定信任关系中其他领域的域名。

"AdminServer": "kdc.com:749",

指定信任关系的其他领域中的管理服务器的完全限定域名 (FQDN) 或 IP 地址。管理服务器和 KDC 服务器通常运行在具有相同 FQDN 的同一台计算机上,但通过不同的端口进行通信。

如果未指定端口,则使用端口 749,这是 Kerberos 默认值。另外,您还可以指定端口(例如,domain.example.com:749)。

"KdcServer": "kdc.com:88"

指定信任关系的其他领域中的 KDC 服务器的完全限定域名 (FQDN) 或 IP 地址。KDC 服务器和管理服务器通常运行在具有相同 FQDN 的同一台计算机上,但使用不同的端口。

如果未指定端口,则使用端口 88,这是 Kerberos 默认值。另外,您还可以指定端口(例如,domain.example.com:88)。

}

}

"ExternalKdcConfiguration": {

在指定 ExternalKdc 时是必需的.

"TicketLifetimeInHours": 24,

可选。指定在使用此安全配置的集群上,由 KDC 颁发的 Kerberos 票证的有效期间。

出于安全考虑,限制票证生命周期。集群应用程序和服务在过期后自动续订票证。使用 Kerberos 凭证通过 SSH 连接到集群的用户在票证过期后需要从主节点命令行运行 kinit 来续订。

"KdcServerType": "Single",

指定引用了单个 KDC 服务器。目前支持的唯一值是 Single

"AdminServer": "kdc.com:749",

指定外部管理服务器的完全限定域名 (FQDN) 或 IP 地址。管理服务器和 KDC 服务器通常运行在具有相同 FQDN 的同一台计算机上,但通过不同的端口进行通信。

如果未指定端口,则使用端口 749,这是 Kerberos 默认值。另外,您还可以指定端口(例如,domain.example.com:749)。

"KdcServer": "kdc.com:88",

指定外部 KDC 服务器的完全限定域名 (FQDN)。KDC 服务器和管理服务器通常运行在具有相同 FQDN 的同一台计算机上,但使用不同的端口。

如果未指定端口,则使用端口 88,这是 Kerberos 默认值。另外,您还可以指定端口(例如,domain.example.com:88)。

"AdIntegrationConfiguration": {

指定 Kerberos 委托人身份验证与 Microsoft Active Directory 域集成。

"AdRealm": "AD.DOMAIN.COM",

指定 Active Directory 域的 Kerberos 领域名称。按照约定,Kerberos 领域名称通常与域名相同,但使用全大写。

"AdDomain": "ad.domain.com"

指定 Active Directory 域名。

}

}

}

}

为处理 EMRFS 对 Amazon S3 的请求配置 IAM 角色

EMRFS 的 IAM 角色让您能够为 Amazon S3 中的 EMRFS 数据提供不同权限。您可以创建角色映射,来指定在访问请求包含您指定的标识符时用来获得权限的 IAM 角色。标识符可以是 Hadoop 用户或角色,或 Amazon S3 前缀。

有关更多信息,请参阅 为处理 EMRFS 对 Amazon S3 的请求配置 IAM 角色

使用 AWS CLI 指定 EMRFS 的 IAM 角色

下面是在安全配置中为 EMRFS 指定自定义 IAM 角色的 JSON 代码段示例。它演示三个不同标识符类型的角色映射,后跟参数引用。

{ "AuthorizationConfiguration": { "EmrFsConfiguration": { "RoleMappings": [{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_user1", "IdentifierType": "User", "Identifiers": [ "user1" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_to_MyBuckets", "IdentifierType": "Prefix", "Identifiers": [ "s3://MyBucket/","s3://MyOtherBucket/" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_AdminGroup", "IdentifierType": "Group", "Identifiers": [ "AdminGroup" ] }] } } }
参数 说明

"AuthorizationConfiguration":

必需。

"EmrFsConfiguration":

必需。包含角色映射。

  "RoleMappings":

必需。包含一个或多个角色映射定义。角色映射按它们出现的自上而下顺序进行计算。如果针对 Amazon S3 中的数据发出 EMRFS 调用时,某个角色映射的评估结果为 true,则不会评估其他角色映射,并且 EMRFS 将对该请求使用指定的 IAM 角色。角色映射包括以下必需参数:

   "Role":

arn:aws:iam::account-id:role/role-name 格式指定 IAM 角色的 ARN 标识符。这是在对 Amazon S3 的 EMRFS 请求与任何指定的 Identifiers 匹配时 Amazon EMR 会采用的 IAM 角色。

   "IdentifierType":

可以是以下值之一:

  • "User" 指定标识符是一个或多个可以是 Linux 账户用户或 Kerberos 委托人的 Hadoop 用户。当 EMRFS 请求源自指定的一个或多个用户时,将会采用 IAM 角色。

  • "Prefix" 指定标识符是 Amazon S3 位置。对于对具有指定前缀的一个或多个位置的调用,将会采用 IAM 角色。例如,前缀 s3://mybucket/ s3://mybucket/mydir s3://mybucket/yetanotherdir 匹配。

  • "Group" 指定标识符是一个或多个 Hadoop 组。如果请求源自一个或多个指定组中的用户,将会采用 IAM 角色。

   "Identifiers":

指定相应标识符类型的一个或多个标识符。用逗号分隔多个标识符,不带空格。