创建安全配置 - Amazon EMR

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

创建安全配置

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

使用控制台创建安全配置
  1. https://console.aws.amazon.com/em r 上打开亚马逊EMR控制台。

  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参数定义了加密EMRFS访问 Amazon S3 的IAM角色身份验证的选项,如以下部分所述。

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

配置数据加密

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

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

注意

当你使用时 AWS KMS,加密密钥的存储和使用将收取费用。有关更多信息,请参阅 AWS KMS 定价

使用控制台指定加密选项

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

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

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

  • S3 数据加密下,对于加密模式,选择一个值来确定亚马逊如何EMR加密 Amazon S3 数据。EMRFS

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

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

    • AWS KMS key

      选择此选项可指定 AWS KMS key。 对于 AWS KMS key,选择一个密钥。密钥必须与您的EMR集群位于同一区域。有关密钥要求的更多信息,请参阅使用 AWS KMS keys 用于加密

      EBS加密

      当你指定 AWS KMS 作为您的密钥提供商,您可以启用EBS加密来加密EBS根设备和存储卷。要启用此类选项,您必须向 Amazon EMR 服务角色授予EMR_DefaultRole使用权限 AWS KMS key 你指定的。有关密钥要求的更多信息,请参阅通过为密KMS钥提供额外权限来启用EBS加密

    • 自定义

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

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

    • PEM

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

    • 自定义

      选择此选项以指定自定义证书提供商,然后,对于 S3 对象,输入您的自定义证书JAR提供者文件在 Amazon S3 或 Amazon S3 ARN 中的位置。在密钥提供程序类中,输入在实现TLSArtifactsProvider接口的应用程序中声明的类的完整类名。

使用指定加密选项 AWS CLI

以下各节使用示例场景来说明不同配置和密钥提供程序的正确格式,然后是JSON参数和相应值的参考。--security-configuration 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 用于亚马逊 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" } } } }'

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

  • 传输中数据加密已启用,并使用引用 Amazon S3 中带有PEM证书的 zip 文件。ARN

  • SSE-KMS 用于亚马逊 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 用于亚马逊 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" } } } }'

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

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

  • CSE-自定义用于存储 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-启用 Amazon S3 加密KMS。

  • 多个 AWS KMS 使用密钥,每个 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" } } } }'

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

SSE-EMR-WAL 用于EMRWAL加密

aws emr create-security-configuration --name "MySecConfig" \ --security-configuration '{ "EncryptionConfiguration": { "EMRWALEncryptionConfiguration":{ }, "EnableInTransitEncryption":false, "EnableAtRestEncryption":false } }'

EnableInTransitEncryption如果要启用相关加密,EnableAtRestEncryption仍然可能是真的。

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

  • SSE-KMS-WAL 用于EMRWAL加密

  • 服务器端加密用途 AWS Key Management Service 作为密钥提供者

aws emr create-security-configuration --name "MySecConfig" \ --security-configuration '{ "EncryptionConfiguration": { "EMRWALEncryptionConfiguration":{ "AwsKmsKey":"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" }, "EnableInTransitEncryption":false, "EnableAtRestEncryption":false } }'

EnableInTransitEncryption如果要启用相关加密,EnableAtRestEncryption仍然可能是真的。

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 中的位置。如果指定了 “自定义”,则S3Object必须引用JAR文件在 Amazon S3 中的位置,然后是CertificateProviderClass条目。
"S3Object" : "ZipLocation" | "JarLocation" 如果指定,则在 Amazon S3 中PEM为 zip 文件提供位置,如果已指定,则Custom为JAR文件提供位置。格式可以是路径(例如,s3://MyConfig/artifacts/CertFiles.zip)或ARN(例如,arn:aws:s3:::Code/MyCertProvider.jar)。如果指定 zip 文件,则其中必须包含名为 privateKey.pemcertificateChain.pem 的文件。名为 trustedCertificates.pem 的文件是可选的。
"CertificateProviderClass" : "MyClassID" 仅当Custom为指定时才需要CertificateProviderTypeMyClassID指定在实现TLSArtifactsProvider接口JAR的文件中声明的完整类名。例如,com.mycompany.MyCertProvider
静态加密参数
"AtRestEncryptionConfiguration" : 指定静态加密值的集合true,包括 Amazon S3 加密和本地磁盘加密。EnableAtRestEncryption
亚马逊 S3 加密参数
"S3EncryptionConfiguration" : 指定使用亚马逊EMR文件系统 (EMRFS) 对 Amazon S3 进行加密时使用的值集合。
"EncryptionMode": "SSE-S3" | "SSE-KMS" | "CSE-KMS" | "CSE-Custom" 指定要使用的 Amazon S3 加密类型。如果SSE-S3已指定,则不需要其他 Amazon S3 加密值。如果指定了SSE-KMS或,CSE-KMS则为 AWS KMS key ARN必须指定为AwsKmsKey值。如果指定 CSE-Custom,则必需指定 S3ObjectEncryptionKeyProviderClass 值。
"AwsKmsKey" : "MyKeyARN" 仅当为指定了SSE-KMSCSE-KMS时才需要EncryptionModeMyKeyARN必须是密钥ARN的完整指定值(例如,arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012)。
"S3Object" : "JarLocation" 仅在CSE-Custom为指定时才需要CertificateProviderTypeJarLocation提供JAR文件在 Amazon S3 中的位置。格式可以是路径(例如,s3://MyConfig/artifacts/MyKeyProvider.jar)或ARN(例如,arn:aws:s3:::Code/MyKeyProvider.jar)
"EncryptionKeyProviderClass" : "MyS3KeyClassID" 仅在CSE-Custom为指定时才需要EncryptionModeMyS3KeyClassID指定在实现 EncryptionMaterialsProvider接口的应用程序中声明的类的完整类名;例如,com.mycompany.MyS3KeyProvider
本地磁盘加密参数
"LocalDiskEncryptionConfiguration" 指定要用于本地磁盘加密的密钥提供程序和相应的值。
"EnableEbsEncryption": true | false 指定true启用EBS加密。EBS加密会对EBS根设备卷和连接的存储卷进行加密。要使用EBS加密,必须指定AwsKmsEncryptionKeyProviderType
"EncryptionKeyProviderType": "AwsKms" | "Custom" 指定密钥提供程序。如果AwsKms已指定,则ARN必须将KMS键指定为AwsKmsKey值。如果指定 Custom,则必需指定 S3ObjectEncryptionKeyProviderClass 值。
"AwsKmsKey : "MyKeyARN" 仅在AwsKms为指定时才需要TypeMyKeyARN必须是密钥ARN的完整指定值(例如,arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-456789012123)。
"S3Object" : "JarLocation" 仅在CSE-Custom为指定时才需要CertificateProviderTypeJarLocation提供JAR文件在 Amazon S3 中的位置。格式可以是路径(例如,s3://MyConfig/artifacts/MyKeyProvider.jar)或ARN(例如,arn:aws:s3:::Code/MyKeyProvider.jar)

"EncryptionKeyProviderClass" : "MyLocalDiskKeyClassID"

仅在Custom为指定时才需要TypeMyLocalDiskKeyClassID指定在实现 EncryptionMaterialsProvider接口的应用程序中声明的类的完整类名;例如,com.mycompany.MyLocalDiskKeyProvider
EMRWAL加密参数
"EMRWALEncryptionConfiguration" 指定EMRWAL加密值。
"AwsKmsKey" 指定CMK密钥 ID Arn。

配置 Kerberos 身份验证

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

使用控制台指定 Kerberos 设置

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

参数 描述

Kerberos

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

Provider

集群专用 KDC

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

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

外部 KDC

仅适用于亚马逊 EMR 5.20.0 及更高版本。指定使用此安全配置的群集使用群集外部的KDC服务器对 Kerberos 主体进行身份验证。未KDC在集群上创建 A。创建集群时,您需要为外部集群指定领域名称和KDC管理员密码KDC。

票证生命周期

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

出于安全考虑,限制票证生命周期。集群应用程序和服务在过期后自动续订票证。SSH使用 Kerberos 凭据连接到集群的用户需要在票证到期后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)。

使用指定 Kerberos 设置 AWS CLI

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

参数 描述

"AuthenticationConfiguration": {

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

"KerberosConfiguration": {

对于 Kerberos 是必需的。指定 Kerberos 配置属性。

"Provider": "ClusterDedicatedKdc",

或者

"Provider: "ExternalKdc",

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

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

"ClusterDedicatedKdcConfiguration": {

在指定 ClusterDedicatedKdc 时是必需的。

"TicketLifetimeInHours": 24,

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

出于安全考虑,限制票证生命周期。集群应用程序和服务在过期后自动续订票证。SSH使用 Kerberos 凭据连接到集群的用户需要在票证到期后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,

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

出于安全考虑,限制票证生命周期。集群应用程序和服务在过期后自动续订票证。SSH使用 Kerberos 凭据连接到集群的用户需要在票证到期后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 域名。

"AdServer": "ad.domain.com"

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

}

}

}

}

为向 Amazon S3 发出的EMRFS请求配置IAM角色

IAM的角色EMRFS允许您为 Amazon S3 中的EMRFS数据提供不同的权限。您可以创建映射来指定一个IAM角色,当访问请求包含您指定的标识符时,该角色用于权限。标识符可以是 Hadoop 用户或角色,或 Amazon S3 前缀。

有关更多信息,请参阅 为向 Amazon S3 发出的EMRFS请求配置IAM角色

为EMRFS使用指定IAM角色 AWS CLI

以下是用于在安全配置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调用数据时角色映射评估为真,则不会再评估角色映射,EMRFS而是使用指定的IAM角色进行请求。角色映射由以下必需参数组成:

   "Role":

以格式指定IAM角色的ARN标识符arn:aws:iam::account-id:role/role-name。如果对 Amazon S3 的请求与任何Identifiers指定的EMRFS请求相匹配,则亚马逊将EMR扮演这个IAM角色。

   "IdentifierType":

可以是以下值之一:

  • "User" 指定标识符是一个或多个 Hadoop 用户,可以是 Linux 账户用户或 Kerberos 主体。当EMRFS请求由指定的一个或多个用户发起时,将IAM扮演该角色。

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

  • "Group" 指定标识符是一个或多个 Hadoop 组。如果请求来自一个或多个指定组中的用户,则代入该IAM角色。

   "Identifiers":

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

配置对 Amazon EC2 实例的元数据服务请求

实例元数据 是有关您的实例的数据,可以用来配置或管理正在运行的实例。您可以使用以下其中一种方法,从正在运行的实例中访问实例元数据:

  • 实例元数据服务版本 1 (IMDSv1)-一种请求/响应方法

  • 实例元数据服务版本 2 (IMDSv2)-一种面向会话的方法

虽然亚马逊同时EC2支持IMDSv1和IMDSv2,但亚马逊EMR支持IMDSv2亚马逊 EMR 5.23.1、5.27.1、5.32 或更高版本以及 6.2 或更高版本。在这些版本中,Amazon EMR 组件IMDSv2用于所有IMDS调用。对于应用程序代码中的IMDS调用,您可以同时使用IMDSv1和IMDSv2,或者将配置IMDS为仅IMDSv2用于提高安全性。当您指定IMDSv2必须使用时,将IMDSv1不再起作用。

有关更多信息,请参阅 Amazon EC2 用户指南中的配置实例元数据服务

注意

在早期的 Amazon EMR 5.x 或 6.x 版本中,关闭IMDSv1会导致集群启动失败,因为亚马逊EMR组件IMDSv1用于所有IMDS调用。关闭时IMDSv1,请确保使用的所有自定义软件都已更新IMDSv1为。IMDSv2

使用指定实例元数据服务配置 AWS CLI

以下是在安全配置中指定 Amazon EC2 实例元数据服务 (IMDS) 的示例JSON片段。使用自定义安全配置是可选的。

{ "InstanceMetadataServiceConfiguration" : { "MinimumInstanceMetadataServiceVersion": integer, "HttpPutResponseHopLimit": integer } }
参数 描述

"InstanceMetadataServiceConfiguration":

如果您未在安全配置IMDS中指定并使用要求的 Amazon EMR 版本IMDSv1,Amazon 将EMR默认使用IMDSv1作为最低实例元数据服务版本。如果要使用自己的配置,则需要以下两个参数。

"MinimumInstanceMetadataServiceVersion":

必需。指定 12。值为 “1允许” IMDSv1 和IMDSv2。值为 “仅2允许” IMDSv2。

"HttpPutResponseHopLimit":

必需。实例元数据请求所需的HTTPPUT响应跳跃限制。该数字越大,实例元数据请求传播得越远。默认值:1。您可以指定 164 之间的整数。

使用控制台指定实例元数据服务配置

当您从 Amazon EMR 控制台启动集群时,您可以IMDS为其配置使用。

要配置使用控制台的IMDS方式,请执行以下操作:
  1. 在安全配置页面上创建新的安全配置时,选择EC2实例元数据服务设置下的配置EC2实例元数据服务。只有亚马逊 EMR 5.23.1、5.27.1、5.32 或更高版本以及 6.2 或更高版本支持此配置。

  2. 对于 Minimum Instance Metadata Service Version (最低实例元数据服务版本) 选项,请选择以下任一项:

    • 如果您@@ 只想在此集群IMDSv2上允许IMDSv2,请关闭IMDSv1并仅允许。请参阅《Amazon EC2 用户指南》中的过渡到使用实例元数据服务版本 2

    • 如果要在此@@ 集群IMDSv2上允许IMDSv1和以会话为导向,则允许在集群IMDSv2上同时使用IMDSv1和。

  3. 对于IMDSv2,您还可以通过将HTTP输入响应跳数限制设置为介于和之间的1整数,为元数据令牌配置允许的网络跳跃数。64

有关更多信息,请参阅 Amazon EC2 用户指南中的配置实例元数据服务

请参阅 Amazon EC2 用户指南中的配置实例详细信息和配置实例元数据服务。