セキュリティ設定を作成する - Amazon EMR

セキュリティ設定を作成する

このトピックでは、EMR コンソールと AWS CLI を使用してセキュリティ設定を作成する一般的な手順と、暗号化、認証、および EMRFS の IAM ロールを含むパラメータのリファレンスについて説明します。これらの機能の詳細については、次のトピックを参照してください。

コンソールを使用してセキュリティ設定を作成するには
  1. Amazon EMR コンソール (https://console.aws.amazon.com/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 パラメータは、以下のセクションで説明するように、[Encryption] (暗号化)、[IAM Roles for EMRFS access to Amazon S3] (Amazon S3 にアクセスするための EMRFS の IAM ロール)、および [Authentication] (認証) のオプションを定義します。

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

データ暗号化の設定

セキュリティ設定で暗号化を設定する前に、暗号化に使用するキーと証明書を作成します。詳細については、Amazon EMR を使用した保管中のデータを暗号化するためのキーの提供 および Amazon EMR 暗号化を使用して転送中のデータを暗号化するための証明書の提供 を参照してください。

セキュリティ設定を作成する場合、保管時のデータ暗号化および転送時のデータ暗号化の 2 種類の暗号化オプションを指定します。保管時のデータの暗号化オプションには、EMRFS での Amazon S3 暗号化とローカルディスク暗号化の両方が含まれます。転送時の暗号化オプションでは、Transport Layer Security (TLS) をサポートする特定のアプリケーションで、オープンソースの暗号化機能を有効にします。保管時と転送時のオプションは、一緒にまたは個別に有効にできます。詳細については、「保管中と転送中のデータの暗号化」を参照してください。

注記

AWS KMS を使用するときは、ストレージと暗号化キーの使用に対して料金が適用されます。詳細については、「AWS KMS の料金」を参照してください。

コンソールを使用して暗号化オプションを指定する

次のガイドラインに従って、[暗号化] の下のオプションを選択します。

  • ファイルシステム内に保存されたデータを暗号化するには、[At rest encryption (保管時の暗号化)] の下のオプションを選択します。

    Amazon S3、ローカルディスク、またはその両方でデータを暗号化するように選択できます。

  • [S3 data encryption] (S3 データ暗号化) の [Encryption mode] (暗号化モード) で、Amazon EMR での EMRFS による Amazon S3 データの暗号化方法を指定する値を選択します。

    次に実行する操作は、選択する暗号化モードによって異なります。

  • [Local disk encryption (ローカルディスク暗号化)] で、[Key provider type (キープロバイダーのタイプ)] の値を選択します。

    • AWS KMS key

      このオプションを選択して AWS KMS keyを指定します。[AWS KMS key] で、キーを選択します。キーは EMR クラスターと同じリージョンに存在する必要があります。キーの要件の詳細については、AWS KMS keysを使用した暗号化を参照してください。

      EBS 暗号化

      AWS KMS をキープロバイダーとして指定すると、EBS 暗号化を有効にして EBS ルートデバイスとストレージボリュームを暗号化できます。このようなオプションを有効にするには、EMR サービスロール EMR_DefaultRole に、指定した AWS KMS keyを使用するためのアクセス許可を付与する必要があります。キーの要件の詳細については、KMS キーに追加のアクセス許可を提供して EBS 暗号化を有効にするを参照してください。

    • Custom

      カスタムキープロバイダーを指定するには、このオプションを選択します。[S3 object] (S3 オブジェクト) で、カスタムキープロバイダー JAR ファイルの Amazon S3 の場所を入力するか、Amazon S3 ARN を入力します。[Key provider class (キープロバイダークラス)] で、EncryptionMaterialsProvider インターフェイスを実装するアプリケーションで宣言するクラスの完全なクラス名を入力します。ここで提供するクラス名は、CSE カスタムで提供したクラス名とは異なる必要があります。

  • 転送時の暗号化でオープンソース TLS 暗号化機能を有効にするには、[In-transit encryption (転送時の暗号化)] を選択します。以下のガイドラインに従って [Certificate provider type (証明書プロバイダーのタイプ)] を選択します。

    • PEM

      このオプションを選択すると、zip ファイル内で提供する PEM ファイルを使用できます。zip ファイル内では、privateKey.pem と certificateChain.pem の 2 つのアーティファクトが必要です。3 つ目の 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 を使用して暗号化オプションを指定する

以下のセクションでは、サンプルシナリオを使用して、設定、キープロバイダー、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 が 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" } } } }'

次の例は、以下のシナリオについて示しています。

  • 伝送中のデータ暗号化は、カスタムキープロバイダーで有効になります。

  • Amazon S3 データに CSE-Custom が使用されます。

  • ローカルディスク暗号化ではカスタムキープロバイダーが使用されます。

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 で有効になっています。

  • 複数の AWS KMS キー (S3 バケットごとに 1 つ) が使用され、これらの個々の 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 Specify true to enable in-transit encryption and false to disable it. If omitted, false is assumed, and in-transit encryption is disabled.
"EnableAtRestEncryption": true | false Specify true to enable at-rest encryption and false to disable it. If omitted, false is assumed and at-rest encryption is disabled.
伝送中の暗号化パラメータ
"InTransitEncryptionConfiguration" : Specifies a collection of values used to configure in-transit encryption when EnableInTransitEncryption is true.
"CertificateProviderType": "PEM" | "Custom" Specifies whether to use PEM certificates referenced with a zipped file, or a Custom certificate provider. If PEM is specified, S3Object must be a reference to the location in Amazon S3 of a zip file containing the certificates. If Custom is specified, S3Object must be a reference to the location in Amazon S3 of a JAR file, followed by a CertificateProviderClass entry.
"S3Object" : "ZipLocation" | "JarLocation" Provides the location in Amazon S3 to a zip file when PEM is specified, or to a JAR file when Custom is specified. The format can be a path (for example, s3://MyConfig/artifacts/CertFiles.zip) or an ARN (for example, arn:aws:s3:::Code/MyCertProvider.jar). If a zip file is specified, it must contain files named exactly privateKey.pem and certificateChain.pem. A file named trustedCertificates.pem is optional.
"CertificateProviderClass" : "MyClassID" Required only if Custom is specified for CertificateProviderType. MyClassID specifies a full class name declared in the JAR file, which implements the TLSArtifactsProvider interface. For example, com.mycompany.MyCertProvider.
保管時の暗号化パラメータ
"AtRestEncryptionConfiguration" : Specifies a collection of values for at-rest encryption when EnableAtRestEncryption is true, including Amazon S3 encryption and local disk encryption.
Amazon S3 暗号化パラメータ
"S3EncryptionConfiguration" : Specifies a collection of values used for Amazon S3 encryption with the EMR File System (EMRFS).
"EncryptionMode": "SSE-S3" | "SSE-KMS" | "CSE-KMS" | "CSE-Custom" Specifies the type of Amazon S3 encryption to use. If SSE-S3 is specified, no further Amazon S3 encryption values are required. If either SSE-KMS or CSE-KMS is specified, an AWS KMS key ARN must be specified as the AwsKmsKey value. If CSE-Custom is specified, S3Object and EncryptionKeyProviderClass values must be specified.
"AwsKmsKey" : "MyKeyARN" Required only when either SSE-KMS or CSE-KMS is specified for EncryptionMode. MyKeyARN must be a fully specified ARN to a key (for example, arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012).
"S3Object" : "JarLocation" Required only when CSE-Custom is specified for CertificateProviderType. JarLocation provides the location in Amazon S3 to a JAR file. The format can be a path (for example, s3://MyConfig/artifacts/MyKeyProvider.jar) or an ARN (for example, arn:aws:s3:::Code/MyKeyProvider.jar).
"EncryptionKeyProviderClass" : "MyS3KeyClassID" Required only when CSE-Custom is specified for EncryptionMode. MyS3KeyClassID specifies a full class name of a class declared in the application that implements the EncryptionMaterialsProvider interface; for example, com.mycompany.MyS3KeyProvider.
ローカルディスクの暗号化パラメータ
"LocalDiskEncryptionConfiguration" Specifies the key provider and corresponding values to be used for local disk encryption.
"EnableEbsEncryption": true | false Specify true to enable EBS encryption. EBS encryption encrypts the EBS root device volume and attached storage volumes. To use EBS encryption, you must specify AwsKms as your EncryptionKeyProviderType.
"EncryptionKeyProviderType": "AwsKms" | "Custom" Specifies the key provider. If AwsKms is specified, an KMS key ARN must be specified as the AwsKmsKey value. If Custom is specified, S3Object and EncryptionKeyProviderClass values must be specified.
"AwsKmsKey : "MyKeyARN" Required only when AwsKms is specified for タイプ. MyKeyARN must be a fully specified ARN to a key (for example, arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-456789012123).
"S3Object" : "JarLocation" Required only when CSE-Custom is specified for CertificateProviderType. JarLocation provides the location in Amazon S3 to a JAR file. The format can be a path (for example, s3://MyConfig/artifacts/MyKeyProvider.jar) or an ARN (for example, arn:aws:s3:::Code/MyKeyProvider.jar).

"EncryptionKeyProviderClass" : "MyLocalDiskKeyClassID"

Required only when Custom is specified for タイプ. MyLocalDiskKeyClassID specifies a full class name of a class declared in the application that implements the EncryptionMaterialsProvider interface; for example, com.mycompany.MyLocalDiskKeyProvider.

Kerberos 認証の設定

Kerberos 設定を使用したセキュリティ設定は、Kerberos 属性を使用して作成されているクラスターでのみ使用できます。それ以外の場合はエラーが発生します。詳細については、「Amazon EMR での認証に Kerberos を使用する」を参照してください。Kerberos は Amazon EMR リリースバージョン 5.10.0 以降でのみ使用できます。

コンソールを使用して 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 領域名はドメイン名と同じにします。ただし、すべて大文字にします。

ドメイン

信頼関係の他の領域のドメイン名を指定します。

[Admin server] (管理者サーバー)

信頼関係の他の領域の管理サーバーの完全修飾ドメイン名 (FQDN) または IP アドレスを指定します。通常、管理サーバーと KDC サーバーは同じ FQDN を持つ同じマシン上で実行されますが、通信には別のポートを使用します。

ポートを指定しない場合、Kerberos のデフォルトであるポート 749 が使用されます。オプションで、ポート (domain.example.com:749 など) を指定できます。

[KDC server] (KDC サーバー)

信頼関係の他の領域の KDC サーバーの完全修飾ドメイン名 (FQDN) または IP アドレスを指定します。通常、KDC サーバーと管理サーバーは同じ FQDN を持つ同じマシン上で実行されますが、別のポートを使用します。

ポートを指定しない場合、Kerberos のデフォルトであるポート 88 が使用されます。オプションで、ポート (domain.example.com:88 など) を指定できます。

外部 KDC

クラスター外部 KDC がクラスターで使用されることを指定します。

外部 KDC プロパティ

[Admin server] (管理者サーバー)

外部管理サーバーの完全修飾ドメイン名 (FQDN) または IP アドレスを指定します。通常、管理サーバーと KDC サーバーは同じ FQDN を持つ同じマシン上で実行されますが、通信には別のポートを使用します。

ポートを指定しない場合、Kerberos のデフォルトであるポート 749 が使用されます。オプションで、ポート (domain.example.com:749 など) を指定できます。

[KDC server] (KDC サーバー)

外部 KDC サーバーの完全修飾ドメイン名 (FQDN) を指定します。通常、KDC サーバーと管理サーバーは同じ FQDN を持つ同じマシン上で実行されますが、別のポートを使用します。

ポートを指定しない場合、Kerberos のデフォルトであるポート 88 が使用されます。オプションで、ポート (domain.example.com:88 など) を指定できます。

[Active Directory Integration] (Active Directory の統合)

Kerberos プリンシパル認証が Microsoft Active Directory ドメインに統合されることを指定します。

Active Directory 統合プロパティ

[Active Directory realm] (Active Directory 領域)

Active Directory ドメインの Kerberos 領域名を指定します。慣例により、Kerberos 領域名は通常、ドメイン名と同じにします。ただし、すべて大文字にします。

[Active Directory domain] (Active Directory ドメイン)

Active Directory ドメイン名を指定します。

[Active Directory server] (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 を持つ同じマシン上で実行されますが、通信には別のポートを使用します。

ポートを指定しない場合、Kerberos のデフォルトであるポート 749 が使用されます。オプションで、ポート (domain.example.com:749 など) を指定できます。

"KdcServer": "kdc.com:88"

信頼関係の他の領域の KDC サーバーの完全修飾ドメイン名 (FQDN) または IP アドレスを指定します。通常、KDC サーバーと管理サーバーは同じ FQDN を持つ同じマシン上で実行されますが、別のポートを使用します。

ポートを指定しない場合、Kerberos のデフォルトであるポート 88 が使用されます。オプションで、ポート (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 を持つ同じマシン上で実行されますが、通信には別のポートを使用します。

ポートを指定しない場合、Kerberos のデフォルトであるポート 749 が使用されます。オプションで、ポート (domain.example.com:749 など) を指定できます。

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

外部 KDC サーバーの完全修飾ドメイン名 (FQDN) を指定します。通常、KDC サーバーと管理サーバーは同じ FQDN を持つ同じマシン上で実行されますが、別のポートを使用します。

ポートを指定しない場合、Kerberos のデフォルトであるポート 88 が使用されます。オプションで、ポート (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 ロールを設定する

EMRFS の IAM ロールを使用すると、Amazon S3 の EMRFS データに異なるアクセス権限を付与することができます。指定した ID がアクセスリクエストに含まれている場合は、アクセス権限で使用する IAM ロールを指定するロールマッピングを作成します。識別子は、Hadoop ユーザーかロール、または Amazon S3 プレフィックスです。

詳細については、「Amazon S3 への EMRFS リクエストの IAM ロールを設定する」を参照してください。

AWS CLI を使用して EMRFS の IAM ロールを指定する

以下は、セキュリティ設定内の EMRFS のカスタム IAM ロールを指定するための JSON スニペットの例です。3 つの異なる識別子タイプのロールマッピングと、パラメータリファレンスを示します。

{ "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":

必須。1 つ以上のロールマッピング定義が含まれます。ロールのマッピングは、表示順に上から下に評価されます。Amazon S3 のデータに対する EMRFS 呼び出しでロールマッピングが true と評価された場合、それ以上のロールマッピングは評価されず、EMRFS はリクエストに指定された IAM ロールを使用します。ロールマッピングは、以下の必須パラメータで構成されます。

   "Role":

IAM ロールの ARN 識別子を形式 arn:aws:iam::account-id:role/role-name で指定します。これは、Amazon S3 への EMRFS リクエストが、指定された Identifiers のいずれかに一致した場合に Amazon EMR が引き受ける IAM ロールです。

   "IdentifierType":

次のいずれかを指定できます。

  • "User" は、識別子が 1 人以上の Hadoop ユーザーであることを指定します。これは Linux アカウントユーザーまたは Kerberos プリンシパルです。EMRFS リクエストが指定のユーザーから送信されると、IAM ロールが引き受けられます。

  • "Prefix" は、識別子が Amazon S3 の場所であることを指定します。IAM ロールは、指定されたプレフィックスを持つ場所への呼び出しに対して引き受けられます。例えば、プレフィックス s3://mybucket/ は、 s3://mybucket/mydir および s3://mybucket/yetanotherdir に一致します。

  • "Group" は、識別子が 1 つ以上の Hadoop グループであることを指定します。IAM ロールは、リクエストが指定されたグループのユーザーから発信された場合に引き受けられます。

   "Identifiers":

適切な識別子タイプの 1 つ以上の識別子を指定します。複数の識別子は、スペースを入れずにカンマで区切ります。

Amazon EC2 インスタンスへのメタデータサービスリクエストを設定する

インスタンスメタデータは、インスタンスに関するデータで、実行中のインスタンスを設定または管理するために使用します。次のいずれかのメソッドを使って、実行中のインスタンスからインスタンスメタデータにアクセスできます。

  • インスタンスメタデータサービスバージョン 1 (IMDSv1) – リクエスト/レスポンスメソッド

  • インスタンスメタデータサービスバージョン 2 (IMDSv2) – セッション指向メソッド

Amazon EC2 は IMDSv1 と IMDSv2 の両方をサポートしていますが、Amazon EMR 5.23.1、5.27.1、5.32 以降、6.2 以降では IMDSv2 をサポートしています。これらのリリースでは、Amazon EMR コンポーネントはすべての IMDS 呼び出しに IMDSv2 を使用します。アプリケーションコードでの IMDS 呼び出しでは、IMDSv1 と IMDSv2 の両方を使用するか、または、セキュリティを強化するために IMDSv2 のみを使用するように IMDS を設定できます。IMDSv2を使用しなければならないように指定すると、IMDSv1はもう機能しなくなります。

詳細については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「インスタンスメタデータサービスの設定」を参照してください。

注記

以前の Amazon EMR 5.x または 6.x リリースでは、IMDSv1 をオフにすると、Amazon EMR コンポーネントがすべての IMDS 呼び出しに IMDSv1 を使用するため、クラスターの起動に失敗します。IMDSv1 をオフにするときは、IMDSv1 を使用するカスタムソフトウェアが IMDSv2 に更新されていることを確認してください。

AWS CLI を使用してインスタンスメタデータサービス設定を指定する

以下は、セキュリティ設定内で Amazon EC2 インスタンスメタデータサービス (IMDS) を指定するための JSON スニペットの例です。

{ "InstanceMetadataServiceConfiguration" : { "MinimumInstanceMetadataServiceVersion": integer, "HttpPutResponseHopLimit": integer } }
パラメータ 説明

"InstanceMetadataServiceConfiguration":

必須。

"MinimumInstanceMetadataServiceVersion":

必須。1 または 2 を指定します。値 1 では、IMDSv1 と IMDSv2 が許可されます。値 2 では、IMDSv2 のみが許可されます。

"HttpPutResponseHopLimit":

必須。インスタンスメタデータリクエストで必要な HTTP PUT レスポンスのホップ制限。数値が大きいほど、インスタンスメタデータリクエストの転送距離を伸ばすことができます。デフォルト: 1164 の整数を指定します。

コンソールを使用してインスタンスメタデータサービス設定を指定する

Amazon EMR コンソールから起動するときに、クラスターの IMDS の使用を設定できます。

コンソールを使用して IMDS の使用を設定するには
  1. [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 以降でのみサポートされます。

  2. [Minimum Instance Metadata Service Version] (インスタンスメタデータサービスの最小バージョン) オプションで、次のいずれかを選択します。

    • [Turn off IMDSv1 and only allow IMDSv2] (IMDSv1 をオフにして IMDSv2 のみを許可する)。これは、このクラスターで IMDSv2 のみを許可する場合に選択します。「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「インスタンスメタデータサービスバージョン 2 の使用への移行」を参照してください。

    • [Allow both IMDSv1 and IMDSv2 on cluster] (クラスターで IMDSv1 と IMDSv2 の両方を許可する)。これは、このクラスターで IMDSv1 およびセッション指向の IMDSv2 を許可する場合に選択します。

  3. IMDSv2 では、[HTTP put response hop limit] (HTTP PUT レスポンスのホップ制限) を 164 の整数に設定して、メタデータトークンに許容されるネットワークホップ数を設定することもできます。

詳細については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「インスタンスメタデータサービスの設定」を参照してください。

Linux インスタンス用 Amazon EC2 ユーザーガイド」の「インスタンスの詳細を設定する」および「インスタンスメタデータサービスの設定」を参照してください。