本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建安全配置
本主题介绍使用 EMR 控制台和 AWS CLI 创建安全配置的一般过程,并介绍有关加密、身份验证和 EMRFS 的 IAM 角色的参数的参考信息。有关这些功能的更多信息,请参阅以下主题:
使用控制台创建安全配置
-
通过以下网址打开 Amazon EMR 控制台:https://console.amazonaws.cn/elasticmapreduce/
。 -
在导航窗格中,选择 Security Configurations (安全配置)、Create security configuration (创建安全配置)。
-
键入安全配置的 Name (名称)。
-
选择加密和身份验证选项,如以下部分所述,然后选择创建。
使用 AWS CLI 创建安全配置
-
使用以下示例中所示的
create-security-configuration
命令。-
对于
SecConfigName
,指定安全配置的名称。这是您在创建使用此安全配置的集群时指定的名称。 -
对于
,指定内联 JSON 结构或本地 JSON 文件的路径,例如SecConfigDef
。JSON 参数定义 Encryption (加密)、IAM Roles for EMRFS access to (用于 EMRFS 访问 Amazon S3的 IAM 角色) 和 Authentication (身份验证) 的选项,如以下部分中所述。file://MySecConfig.json
aws emr create-security-configuration --name "
SecConfigName
" --security-configurationSecConfigDef
-
配置数据加密
在配置安全配置中的加密之前,创建用于加密的密钥和证书。有关更多信息,请参阅 提供通过 Amazon EMR 加密静态数据的密钥 和 为通过 Amazon EMR 加密来加密传输中的数据提供证书。
在创建安全配置时,需要指定两组加密选项:静态数据加密和传输中数据加密。静态数据加密选项包括带有 EMRFS 的 Amazon S3 和本地磁盘加密。传输中加密选项为支持传输层安全性 (TLS) 的某些应用程序启用开源加密功能。静态选项和传输中选项可以同时启用或分别启用。有关更多信息,请参阅加密静态数据和传输中的数据。
使用 AWS KMS 时,加密密钥的存储和使用将产生费用。有关更多信息,请参阅 AWS KMS 定价
使用控制台指定加密选项
根据以下准则选择 Encryption (加密) 下的选项。
-
选择静态加密下的选项以加密存储在文件系统中的数据。
您可以选择加密 Amazon S3 和/或本地磁盘中的数据。
-
在 S3 data encryption (S3 数据加密) 下,为 Encryption mode (加密模式) 选择一个值以确定 Amazon EMR 如何使用 EMRFS 加密 Amazon S3 数据。
下一步取决于所选的加密模式:
-
SSE-S3
指定使用 Amazon S3 托管的加密密钥进行服务器端加密。您无需执行任何其他操作,因为 Amazon S3 将为您处理密钥。
-
SSE-KMS 或 CSE-KMS
指定使用 AWS KMS 托管的密钥 (KMS-CSE) 进行服务器端加密或使用 AWS KMS 托管的密钥 (CSE-KMS) 进行客户端加密。对于 AWS KMS Key (AWS KMS 密钥),选择一个密钥。该密钥必须与您的 EMR 集群同在一个区域中。有关密钥要求,请参阅使用 AWS KMS 客户主密钥 (CMK) 进行加密。
-
CSE-Custom (自定义 CSE)
指定使用自定义客户端主密钥(自定义 CSE)进行客户端加密。对于 S3 object (S3 对象),输入您的自定义密钥提供程序 JAR 文件在 Amazon S3 中或 Amazon S3 ARN 的位置。之后,对于 Key provider class (密钥提供程序类别),输入在实现 EncryptionMaterialsProvider 接口的应用程序中声明的类的完整类名。
-
-
在 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 参数和相应值的参考信息。
传输中数据加密选项示例
下面的示例将说明以下情景:
-
传输中的数据加密已启用,静态数据加密已禁用。
-
Amazon S3 中一个包含证书的 zip 文件用作密钥提供程序(请参阅为通过 Amazon EMR 加密来加密传输中的数据提供证书了解证书要求)。
aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : true, "EnableAtRestEncryption" : false, "InTransitEncryptionConfiguration" : { "TLSCertificateConfiguration" : { "CertificateProviderType" : "PEM", "S3Object" : "s3://MyConfigStore/artifacts/MyCerts.zip" } } } }'
下面的示例将说明以下情景:
-
传输中的数据加密已启用,静态数据加密已禁用。
-
使用了自定义密钥提供程序 (请参阅为通过 Amazon EMR 加密来加密传输中的数据提供证书了解证书要求)。
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" } } } }'
下面的示例将说明以下情景:
-
传输中的数据加密已禁用,而静态数据加密已启用。
-
Amazon S3通过 SSE-KMS 启用了 加密,并且加密例外应用到了单独的 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 } }'
下面的示例将说明以下情景:
-
传输中的数据加密已禁用,而静态数据加密已启用。
-
Amazon S3通过 SSE-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"
: |
指定当 EnableInTransitEncryption 为 true 时用于配置传输中加密的值的集合。
|
"CertificateProviderType" : "PEM" |
"Custom" |
指定是使用通过压缩文件引用的 PEM 证书还是使用 Custom 证书提供程序。如果指定 PEM ,则 S3Object 必须是对包含证书的 zip 文件在 Amazon S3 中的位置的引用。如果指定“Custom (自定义)”,则 S3Object 必须是对 JAR 文件在 Amazon S3 中的位置的引用,后跟一个 CertificateProviderClass 条目。
|
"S3Object" :
" |
" |
如果指定 Amazon S3,则提供 zip 文件在 PEM 中的位置,如果指定 Custom ,则提供 JAR 文件的位置。格式可以是路径 (例如,s3://MyConfig/artifacts/CertFiles.zip ) 或 ARN (例如,arn:aws:s3:::Code/MyCertProvider.jar) 。如果指定 zip 文件,则其中必须包含名为 privateKey.pem 和 certificateChain.pem 的文件。名为 trustedCertificates.pem 的文件是可选的。
|
"CertificateProviderClass" :
" |
仅当为 指定 Custom 时才需要CertificateProviderType 。 指定在 JAR 文件中声明的完整类名,这将实现 TLSArtifactsProvider 接口。例如,com.mycompany.MyCertProvider 。
|
静态加密参数 | |
"AtRestEncryptionConfiguration" :
|
指定当 EnableAtRestEncryption 为 true 时用于配置静态加密(包括 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-KMS 或 CSE-KMS ,则必须指定 AWS KMS 客户主密钥 (CMK) ARN 作为 AwsKmsKey 值。如果指定CSE-Custom 了 ,则必须指定 S3Object 和 EncryptionKeyProviderClass 值。
|
"AwsKmsKey" :
" |
仅当为 指定 SSE-KMS 或 时CSE-KMS 是必需的EncryptionMode 。 必须是密钥的完全指定 ARN(例如arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012 ,)。
|
"S3Object" :
" |
仅当为 指定 时CSE-Custom 是必需的CertificateProviderType 。 Amazon S3 为 JAR 文件提供 中的位置。格式可以是路径 (例如,s3://MyConfig/artifacts/MyKeyProvider.jar ) 或 ARN (例如,arn:aws:s3:::Code/MyKeyProvider.jar) 。
|
"EncryptionKeyProviderClass" :
" |
仅当为 指定 时CSE-Custom 是必需的EncryptionMode 。 指定在实现 EncryptionMaterialsProvider 接口的应用程序中声明的类的完整类名;例如 ,。
|
本地磁盘加密参数 | |
"LocalDiskEncryptionConfiguration" |
指定要用于本地磁盘加密的密钥提供程序和相应的值。 |
"EncryptionKeyProviderType" : "AwsKms" |
"Custom" |
指定密钥提供程序。如果指定 AwsKms ,则必须指定 AWS KMS CMK ARN 作为 AwsKmsKey 值。如果指定Custom 了 ,则必须指定 S3Object 和 EncryptionKeyProviderClass 值。
|
"AwsKmsKey :
" |
仅当为 指定 时AwsKms 是必需的Type 。 必须是密钥的完全指定 ARN(例如
arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-456789012123 ,)。
|
"S3Object" :
" |
仅当为 指定 时CSE-Custom 是必需的CertificateProviderType 。 Amazon S3 为 JAR 文件提供 中的位置。格式可以是路径 (例如,s3://MyConfig/artifacts/MyKeyProvider.jar ) 或 ARN (例如,arn:aws:s3:::Code/MyKeyProvider.jar) 。
|
|
仅当为 指定 时Custom 是必需的Type 。 指定在实现 EncryptionMaterialsProvider 接口的应用程序中声明的类的完整类名;例如 ,。
|
配置 Kerberos 身份验证
包含 Kerberos 设置的安全配置只能由使用 Kerberos 属性创建的集群使用,否则会发生错误。有关更多信息,请参阅Use Kerberos Authentication。仅在 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 连接到集群的用户在票证过期后需要从主节点命令行运行
|
||
跨领域信任 |
指定使用此安全配置的集群上的集群专用 KDC 与不同 Kerberos 领域中的一个 KDC 之间的跨领域信任。 来自另一个领域的委托人(通常是用户)将对使用此配置的集群进行身份验证。需要其他 Kerberos 领域中的其他配置。有关更多信息,请参阅 Tutorial: Configure a Cross-Realm Trust with an Active Directory Domain。 |
||
跨领域信任属性 |
领域 |
指定信任关系中其他领域的 Kerberos 领域名称。按照约定,Kerberos 领域名称与域名相同,但使用全大写。 |
|
域 |
指定信任关系中其他领域的域名。 |
||
管理服务器 |
指定信任关系的其他领域中的管理服务器的完全限定域名 (FQDN) 或 IP 地址。管理服务器和 KDC 服务器通常运行在具有相同 FQDN 的同一台计算机上,但通过不同的端口进行通信。 如果未指定端口,则使用端口 749,这是 Kerberos 默认值。另外,您还可以指定端口(例如, |
||
KDC 服务器 |
指定信任关系的其他领域中的 KDC 服务器的完全限定域名 (FQDN) 或 IP 地址。KDC 服务器和管理服务器通常运行在具有相同 FQDN 的同一台计算机上,但使用不同的端口。 如果未指定端口,则使用端口 88,这是 Kerberos 默认值。另外,您还可以指定端口(例如, |
||
外部 KDC |
指定集群外部 KDC 由集群使用。 |
||
外部 KDC 属性 |
管理服务器 |
指定外部管理服务器的完全限定域名 (FQDN) 或 IP 地址。管理服务器和 KDC 服务器通常运行在具有相同 FQDN 的同一台计算机上,但通过不同的端口进行通信。 如果未指定端口,则使用端口 749,这是 Kerberos 默认值。另外,您还可以指定端口(例如, |
|
KDC 服务器 |
指定外部 KDC 服务器的完全限定域名 (FQDN)。KDC 服务器和管理服务器通常运行在具有相同 FQDN 的同一台计算机上,但使用不同的端口。 如果未指定端口,则使用端口 88,这是 Kerberos 默认值。另外,您还可以指定端口(例如, |
||
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 参数。有关示例配置,请参阅Configuration Examples。
参数 | 说明 | |||||
---|---|---|---|---|---|---|
|
对 Kerberos 必需。指定身份验证配置属于安全配置的一部分。 |
|||||
|
|
对 Kerberos 必需。指定 Kerberos 配置属性。 |
||||
|
|
|
||||
"ClusterDedicatedKdcConfiguration": { |
在指定 |
|||||
|
可选。指定在使用此安全配置的集群上,由 KDC 颁发的 Kerberos 票证的有效期间。 出于安全考虑,限制票证生命周期。集群应用程序和服务在过期后自动续订票证。使用 Kerberos 凭证通过 SSH 连接到集群的用户在票证过期后需要从主节点命令行运行
|
|||||
|
指定使用此安全配置的集群上的集群专用 KDC 与不同 Kerberos 领域中的一个 KDC 之间的跨领域信任。 来自另一个领域的委托人(通常是用户)将对使用此配置的集群进行身份验证。需要其他 Kerberos 领域中的其他配置。有关更多信息,请参阅 Tutorial: Configure a Cross-Realm Trust with an Active Directory Domain。 |
|||||
|
指定信任关系中其他领域的 Kerberos 领域名称。按照约定,Kerberos 领域名称与域名相同,但使用全大写。 |
|||||
|
指定信任关系中其他领域的域名。 |
|||||
|
指定信任关系的其他领域中的管理服务器的完全限定域名 (FQDN) 或 IP 地址。管理服务器和 KDC 服务器通常运行在具有相同 FQDN 的同一台计算机上,但通过不同的端口进行通信。 如果未指定端口,则使用端口 749,这是 Kerberos 默认值。另外,您还可以指定端口(例如, |
|||||
|
指定信任关系的其他领域中的 KDC 服务器的完全限定域名 (FQDN) 或 IP 地址。KDC 服务器和管理服务器通常运行在具有相同 FQDN 的同一台计算机上,但使用不同的端口。 如果未指定端口,则使用端口 88,这是 Kerberos 默认值。另外,您还可以指定端口(例如, |
|||||
|
||||||
|
||||||
"ExternalKdcConfiguration": { |
在指定 |
|||||
|
可选。指定在使用此安全配置的集群上,由 KDC 颁发的 Kerberos 票证的有效期间。 出于安全考虑,限制票证生命周期。集群应用程序和服务在过期后自动续订票证。使用 Kerberos 凭证通过 SSH 连接到集群的用户在票证过期后需要从主节点命令行运行
|
|||||
|
指定引用了单个 KDC 服务器。目前支持的唯一值是 |
|||||
"AdminServer": " |
指定外部管理服务器的完全限定域名 (FQDN) 或 IP 地址。管理服务器和 KDC 服务器通常运行在具有相同 FQDN 的同一台计算机上,但通过不同的端口进行通信。 如果未指定端口,则使用端口 749,这是 Kerberos 默认值。另外,您还可以指定端口(例如, |
|||||
"KdcServer": " |
指定外部 KDC 服务器的完全限定域名 (FQDN)。KDC 服务器和管理服务器通常运行在具有相同 FQDN 的同一台计算机上,但使用不同的端口。 如果未指定端口,则使用端口 88,这是 Kerberos 默认值。另外,您还可以指定端口(例如, |
|||||
|
指定 Kerberos 委托人身份验证与 Microsoft Active Directory 域集成。 |
|||||
|
|
指定 Active Directory 域的 Kerberos 领域名称。按照约定,Kerberos 领域名称通常与域名相同,但使用全大写。 |
||||
|
指定 Active Directory 域名。 |
|||||
|
||||||
|
||||||
|
||||||
|
为处理 EMRFS 对 IAM 的请求配置 Amazon S3 角色
IAMEMRFS 的 角色让您能够为 中的 EMRFS 数据提供不同权限。Amazon S3您可以创建角色映射,来指定在访问请求包含您指定的标识符时用来获得权限的 IAM 角色。标识符可以是 Hadoop 用户或角色,或 Amazon S3 前缀。
有关更多信息,请参阅为处理 EMRFS 对 IAM 的请求配置 Amazon S3 角色。
使用 IAM 指定 EMRFS 的 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
" ] }] } } }
参数 | 说明 |
---|---|
|
必填项。 |
|
必填项。包含角色映射。 |
|
必填项。包含一个或多个角色映射定义。角色映射按它们出现的自上而下顺序进行计算。如果针对 Amazon S3 中的数据发出 EMRFS 调用时,某个角色映射的评估结果为 true,则不会评估其他角色映射,并且 EMRFS 将对该请求使用指定的 IAM 角色。角色映射包括以下必需参数: |
|
以 |
|
可以是以下值之一:
|
|
指定相应标识符类型的一个或多个标识符。用逗号分隔多个标识符,不带空格。 |
配置对Amazon EC2实例的元数据服务请求
实例元数据 是有关您的实例的数据,可以用来配置或管理正在运行的实例。您可以使用以下其中一种方法,从正在运行的实例中访问实例元数据:
-
实例元数据服务版本 1 (IMDSv1 – 请求/响应方法
-
实例元数据服务版本 2 (IMDSv2 - 一种面向会话的方法
虽然 Amazon EC2 同时支持 IMDSv1 和 IMDSv2但在 Amazon EMR 5.23.1、5.27.1、5.32 或更高版本和 6.2 或更高版本中Amazon EMR支持 IMDSv2。在这些版本中Amazon EMR,组件将 IMDSv2 用于所有 IMDS 调用。对于应用程序代码中的 IMDS 调用,您可以使用 IMDSv1 和 IMDSv2或将 IMDS 配置为仅使用 IMDSv2 来提高安全性。当您指定必须使用 IMDSv2 时IMDSv1 不再有效。
有关更多信息,请参阅 中的https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html配置实例元数据服务Amazon EC2 用户指南(适用于 Linux 实例)。
在早期Amazon EMR的 5.x 或 6.x 版本中,关闭 IMDSv1 会导致集群启动失败,因为Amazon EMR组件将 IMDSv1 用于所有 IMDS 调用。关闭 IMDSv1 时,请确保利用 IMDSv1 的任何自定义软件已更新为 IMDSv2。
使用 指定实例元数据服务配置 AWS CLI
下面是用于在安全配置中指定 Amazon EC2 实例元数据服务 (IMDS) 的 JSON 代码段示例。
{ "InstanceMetadataServiceConfiguration" : { "MinimumInstanceMetadataServiceVersion": integer, "HttpPutResponseHopLimit": integer } }
参数 | 说明 |
---|---|
|
必填项。 |
|
必填项。指定 |
|
必填项。实例元数据请求的所需 HTTP PUT 响应跃点限制。该数字越大,实例元数据请求传播得越远。默认值: |
使用控制台指定实例元数据服务配置
您可以在从 Amazon EMR 控制台启动集群时配置对集群的 IMDS 的使用。

要使用控制台配置 IMDS 的使用,请执行以下操作:
-
在 Security configurations (安全配置) 页面上创建新的安全配置时,选择 EC2 Instance Metadata Service (EC2 实例元数据服务) 设置下的 Configure EC2 Instance metadata service (配置 EC2 实例元数据服务)。仅 Amazon EMR 5.23.1、5.27.1、5.32 或更高版本以及 6.2 或更高版本中支持此配置。
-
对于 Minimum Instance Metadata Service Version 选项,选择以下选项之一:
-
关闭 IMDSv1并且仅允许 IMDSv2如果您希望在此集群上仅允许 IMDSv2 请参阅 中的https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html#instance-metadata-transition-to-version-2转换为使用实例元数据服务版本 Amazon EC2 用户指南(适用于 Linux 实例)2。
-
如果要允许此集群上IMDSv1 和面向会话的 IMDSv2IMDSv1IMDSv2请在集群上同时允许它们。
-
-
对于 IMDSv2您还可以通过将 HTTP 放置响应跃点数限制设置为介于
1
和 之间的整数,为元数据令牌配置允许的网络跃点数64
。
有关更多信息,请参阅 中的https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html配置实例元数据服务Amazon EC2 用户指南(适用于 Linux 实例)。
请参阅 中的https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/launching-instance.html#configure_instance_details_step配置实例详细信息和配置实例元数据服务Amazon EC2 用户指南(适用于 Linux 实例)。