ローカルKDCおよびActive Directory KDCを使用したKerberos認証の構成
ビッグ・データ・サービス・クラスタは、デフォルトでローカルMIT KDCをプロビジョニングします。Active Directoryドメインに属するユーザーに Active Directory KDCを使用するようにクラスタをプロビジョニングすることもできます。また、2つのレルム間に相互信頼を設定する必要もあります。
Active Directory KDCを使用するためのAmbariの更新
- Apache Ambariにアクセスします。
- サイド・ツールバーの「クラスタ管理者」で、「Kerberos」を選択します。
- 「Configs」タブを選択し、「Advanced krb5-conf」セクションを展開します。
-
次の内容のように「krb5-conf template」フィールドを変更します:
{# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #} [libdefaults] renew_lifetime = 7d forwardable = true default_realm = {{realm}} ticket_lifetime = 24h dns_lookup_realm = false dns_lookup_kdc = false #default_ccache_name = /tmp/krb5cc_%{uid} #default_tgs_enctypes = {{encryption_types}} #default_tkt_enctypes = {{encryption_types}} {% if domains %} [domain_realm] {%- for domain in domains.split(',') %} {{domain|trim()}} = {{realm}} {%- endfor %} {% endif %} example.oraclevcn.com = <ad-realm> [logging] default = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log kdc = FILE:/var/log/krb5kdc.log [realms] {{realm}} = { {%- if master_kdc %} master_kdc = {{master_kdc|trim()}} {%- endif -%} {%- if kdc_hosts > 0 -%} {%- set kdc_host_list = kdc_hosts.split(',') -%} {%- if kdc_host_list and kdc_host_list|length > 0 %} admin_server = {{admin_server_host|default(kdc_host_list[0]|trim(), True)}} {%- if kdc_host_list -%} {%- if master_kdc and (master_kdc not in kdc_host_list) %} kdc = {{master_kdc|trim()}} {%- endif -%} {% for kdc_host in kdc_host_list %} kdc = {{kdc_host|trim()}} {%- endfor -%} {% endif %} {%- endif %} {%- endif %} } {# Append additional realm declarations below #} <ad-realm> = { admin_server = server-example.oraclevcn.com:749 kdc = kdc-example.oraclevcn.com:88 default_domain = domain-example.oraclevcn.com } [capaths] <ad-realm> = { <your-local-realm> = . }
- 構成を保存し、影響を受けるすべてのサービスを再起動します。
- 「HDFS」→「Configs」→「Advanced」→「Advanced core-site」に移動します。
-
hadoop.security.auth_to_local
パラメータを次のように変更します:RULE:[1:$1@$0](.*@<ad-realm>)s/@.*//
例:
RULE:[2:$1@$0](yarn@EXAMPLE.ORACLE.COM)s/.*/yarn/ RULE:[2:$1@$0](yarn-ats-hbase@EXAMPLE.ORACLE.COM)s/.*/yarn-ats/ RULE:[1:$1@$0](.*@EXAMPLE.REALM)s/@.*// DEFAULT
ドメイン間のクロス・レルム信頼の設定
ローカルのキー配布センター(KDC)からビッグ・データ・サービスODH Kerberos対応クラスタ内のActive Directoryレルムに対する一方向のレルム間の信頼を設定できます。
Active Directoryサーバーの構成
- Active Directory (AD)サーバーで優先される暗号化タイプを設定するには、「グループ・ポリシーの管理」ダイアログを開きます(「スタート」→「Windows管理ツール」「グループ・ポリシーの管理」)。
- 「グループ・ポリシーの管理」ダイアログで、「フォレスト」→<ad-realm>→「ドメイン」→「<ad-realm>」フォルダに移動します。
- 「デフォルトのドメイン・ポリシー」を右クリックして、「編集」を選択します。
- In the Group Policy Management Editor, navigate to Security Options by expanding Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security Options.
- 「セキュリティ オプション」フォルダが選択されていることを確認し、ポリシー「ネットワーク セキュリティ: Kerberosで許可する暗号化の種類を構成する」をダブルクリックします。
-
ダイアログ・ボックスで、Kerberosで許可する必要な暗号化タイプを構成します。ビッグ・データ・サービスでサポートされている最も強力な暗号化タイプ(
AES256_HMAC_SHA1
)の使用をお薦めします。ポリシーを選択し、「OK」を選択します。 -
ローカル・レルム信頼をActive Directoryに追加して、コマンドラインで暗号化を設定します。
netdom trust <your-local-realm> /Domain:<ad-realm> /add /realm /passwordt:<trust-password>
例:
C:\Users\administrator> netdom trust EXAMPLE.ORACLE.COM /Domain:EXAMPLE.REALM /add /realm /passwordt:Welcome1 > The command completed successfully.
-
適切な暗号化タイプを設定します。
ksetup /SetEncTypeAttr <your-local-realm> <enc_type>
<enc_type>パラメータでは、AES、DESまたはRC4暗号化を指定します。次の表から選択します。
AD暗号化ポリシーで使用される暗号化名 ksetup:setenctypeattrでサポートされる暗号化名 DES_CBC_CRC DES-CBC-CRC DES_CBC_MD5 DES-CBC-MD5 RC4_HMAC_MD5 RC4-HMAC-MD5 AES128_HMAC_SHA1 AES128-CTS-HMAC-SHA1-96 AES256_HMAC_SHA1 AES256-CTS-HMAC-SHA1-96 例:
C:\Users\Administrator> ksetup /SetEncTypeAttr EXAMPLE.ORACLE.COM AES256-CTS-HMAC-SHA1-96 > Setting enctypes for domain EXAMPLE.ORACLE.COM to:AES256-CTS-HMAC-SHA1-96
-
暗号化タイプ・セットのリストを確認します。
ksetup /GetEncTypeAttr <your-local-realm>
例:
C:\Users\administrator> ksetup /GetEncTypeAttr EXAMPLE.ORACLE.COM > Enctypes for domain EXAMPLE.ORACLE.COM: AES256-CTS-HMAC-SHA1-96
マスターMIT KDCサーバーの構成
-
ビッグ・データ・サービス・クラスタの最初のマスター・ノード(mn0)にあるマスターKDCで、rootとして次のコマンドを実行します。
kadmin.local
-
レルム間
krbtgt
プリンシパルを追加します。kadmin.local: addprinc -e "<enc_type_list>" krbtgt/<your-local-realm>@<ad-realm>
パスワードを入力するように求められます。Active Directoryサーバーのnetdomコマンドで使用したものと同じパスワードを使用します。
例:
kadmin.local: addprinc -e "aes256-cts:normal" krbtgt/<EXAMPLE_USER>@<EXAMPLE.REALM> > WARNING: no policy specified for krbtgt/<EXAMPLE_USER>@<EXAMPLE.REALM>; defaulting to no policy > Enter password for principal "krbtgt/<EXAMPLE_USER>@<EXAMPLE.REALM>": > Re-enter password for principal "krbtgt/<EXAMPLE_USER>@<EXAMPLE.REALM>": > Principal "krbtgt/<EXAMPLE_USER>@<EXAMPLE.REALM>" created.
ノート
ビッグ・データ・サービスの暗号化タイプには、Active Directoryサーバーとは異なる命名規則があります。たとえば、Active Directoryサーバーで
ビッグ・データ・サービスの暗号化タイプには、Active Directoryサーバーとは異なる命名規則があります。たとえば、Active Directoryサーバーで
AES256-CTS-HMAC-SHA1-96
が使用されている場合、ビッグ・データ・サービスの対応するタイプは、aes256-cts:normal
です。