Azure HDInsight でのエンタープライズ セキュリティの一般情報とガイドライン
セキュリティで保護された HDInsight クラスターをデプロイするときは、デプロイとクラスターの管理が簡単になるいくつかのベスト プラクティスがあります。 ここでは、いくつかの一般情報とガイドラインについて説明します。
セキュリティで保護されたクラスターの使用
推奨
- クラスターが同時に複数のユーザーによって使用される。
- ユーザーによって同じデータに対するアクセス レベルが異なる。
不要
- (単一ユーザー アカウントのように) 自動化ジョブのみを実行する場合は、Standard クラスターで十分です。
- Standard クラスターを使用してデータのインポートを実行し、ユーザーが分析ジョブを実行できる、セキュリティで保護された別のクラスターで同じストレージ アカウントを使用することができます。
ローカル アカウントの使用
- 共有ユーザー アカウントまたはローカル アカウントを使用している場合、そのアカウントを使用して構成またはサービスを変更したユーザーを特定するのは困難になります。
- ローカル アカウントの使用は、ユーザーが組織の一員ではなくなった場合に問題になります。
Ranger
ポリシー
Ranger では、既定で、ポリシーとして拒否を使用します。
承認が有効になっているサービスを介してデータ アクセスが行われる場合:
- Ranger 承認プラグインが呼び出され、要求のコンテキストが与えられます。
- Ranger は、サービス用に構成されたポリシーを適用します。 Ranger ポリシーが失敗すると、アクセス チェックはファイル システムに委ねられます。 MapReduce などの一部のサービスでは、要求を送信している同じユーザーによってファイルまたはフォルダーが所有されているかどうかのみを確認します。 Hive のようなサービスでは、所有権の一致または適切なファイル システムのアクセス許可 (
rwx
) を確認します。
Hive の場合、ユーザーは、アクセス許可の作成、更新、削除を行うアクセス許可を持っていることに加えて、ストレージ上のディレクトリとすべてのサブディレクトリに対する
rwx
アクセス許可を持っている必要があります。ポリシーは、個人ではなくグループに適用できます (推奨)。
Ranger の承認者は、要求ごとにそのサービスの Ranger ポリシーすべてを評価します。 この評価は、ジョブまたはクエリの受け入れにかかる時間に影響を与える可能性があります。
ストレージ アクセス
- ストレージの種類が WASB の場合、OAuth トークンは含まれません。
- Ranger が承認を実行した場合、ストレージ アクセスはマネージド ID を使用して行われます。
- Ranger が承認を実行しなかった場合、ストレージ アクセスはユーザーの OAuth トークンを使用して行われます。
階層型名前空間
階層型名前空間が有効になっていない場合:
- 継承されたアクセス許可はありません。
- ファイル システムのアクセス許可のうち、唯一機能するのはストレージ データ XXXX Azure ロールで、Azure portal でユーザーに直接割り当てられます。
既定の HDFS アクセス許可
- 既定では、ユーザーは HDFS 上の / フォルダーにアクセスできません (アクセスを成功させるためには、ストレージ BLOB 所有者ロールに属している必要があります)。
- MapReduce などのステージング ディレクトリでは、ユーザー固有のディレクトリが作成され、
sticky _wx
アクセス許可が提供されます。 ユーザーはその下にファイルとフォルダーを作成できますが、他の項目は表示されません。
URL 承認
URL 承認が有効になっている場合:
- 構成には、URL 承認で扱われるプレフィックスが含まれます (
adl://
など)。 - この URL へのアクセスである場合、Ranger はユーザーが許可リストに含まれるかどうかを調べます。
- Ranger では、細かい設定が可能なポリシーは確認されません。
Ranger 監査ログを管理する
Ranger 監査ログが hn0 ヘッドノードでディスク領域を過剰に消費するのを防ぐには、ログの保持日数を変更します。
- Ambari UI にサインインします。
- [サービス]>[Ranger]>[構成]>[詳細]>[Advanced ranger-solr-configuration](詳細 Ranger Solr 構成) に移動します。
- [最大リテンション期間 (日数)] を 7 日以下に変更します。
- [保存] を選び、影響を受けるコンポーネントを再起動して変更を反映させます。
カスタム Ranger DB を使用する
Ranger メタデータの高可用性を考慮して、ESP クラスターと一緒に使用する外部 Ranger DB のデプロイをお勧めします。これにより、クラスターが使用できない場合でもポリシーを確実に使用できます。 外部データベースはカスタマー マネージドであるため、DB サイズを調整し、複数の ESP クラスター間でデータベースを共有することもできます。 Azure portal、Azure Resource Manager、Azure CLI などを使用して ESP クラスターを作成するプロセスの中で、外部 Ranger DB を指定できます。
Ranger ユーザー同期を日次実行に設定する
HDInsight ESP クラスターは Ranger 用に、AD ユーザーを 1 時間ごとに自動で同期するように構成されます。 Ranger 同期はユーザー同期であり、AD インスタンスに別途負荷が発生する場合があります。 このため、Ranger ユーザー同期間隔を 24 時間に変更することをお勧めします。
- Ambari UI にサインインします。
- [サービス]>[Ranger]>[構成]>[詳細]>[ranger-ugsync-site](Ranger UG 同期サイト) に移動します
- プロパティ ranger.usersync.sleeptimeinmillisbetweensynccycle を 86400000 (ミリ秒単位で 24 時間) に設定します。
- [保存] を選び、影響を受けるコンポーネントを再起動して変更を反映させます。
リソース グループ
クラスター リソースを区別できるように、クラスターごとに新しいリソース グループを使用します。
NSG、ファイアウォール、内部ゲートウェイ
- ネットワーク セキュリティ グループ (NSG) を使用して、仮想ネットワークをロックダウンします。
- ファイアウォールを使用して、アウトバウンド アクセス ポリシーを処理します。
- パブリック インターネットに対して開かれていない内部ゲートウェイを使用します。
Microsoft Entra ID
Microsoft Entra ID: (Microsoft Entra ID) は、Microsoft のクラウドベースの ID およびアクセス管理サービスです。
ポリシー
IP アドレス ベースのポリシーを使用して、条件付きアクセス ポリシーを無効にします。 これには、クラスターがデプロイされている VNET でサービス エンドポイントを有効にする必要があります。 MFA 用に外部サービス (Microsoft Entra ID 以外) を使用する場合、IP アドレス ベースのポリシーが動作しません
フェデレーション ユーザーには
AllowCloudPasswordValidation
ポリシーが必要です。 HDInsight は Microsoft Entra ID からトークンを取得するためにユーザー名とパスワードを直接使用するため、このポリシーは、すべてのフェデレーション ユーザーに対して有効にする必要があります。信頼できる IP を使用した条件付きアクセス バイパスが必要な場合は、サービス エンドポイントを有効にします。
グループ
- クラスターをデプロイする場合は常にグループを使用します。
- Microsoft Entra ID を使用して、グループのメンバーシップを管理します (クラスター内の個々のサービスを管理するよりも簡単です)。
ユーザー アカウント
- シナリオごとに一意のユーザー アカウントを使用します。 たとえば、インポートにはあるアカウント、クエリやその他の処理ジョブには別のアカウントを使用します。
- 個々のポリシーではなく、グループベースの Ranger ポリシーを使用します。
- クラスターにアクセスする必要がなくなったユーザーを管理する方法について計画を立てます。
Microsoft Entra Domain Services
Microsoft Entra Domain Services では、Windows Server Active Directory と完全に互換性のあるマネージド ドメイン サービス (ドメイン参加、グループ ポリシー、ライトウェイト ディレクトリ アクセス プロトコル (LDAP)、Kerberos 認証、NTLM 認証など) が提供されます。
セキュリティで保護されたクラスターがドメインに参加するには、Microsoft Entra Domain Services が必要です。 HDInsight は、オンプレミスのドメイン コントローラーまたはカスタム ドメイン コントローラーに依存できません。これは、過剰なフォールト ポイント、資格情報の共有、DNS アクセス許可などが伴うためです。 詳細については、Microsoft Entra Domain Services の FAQ を参照してください。
正しい Microsoft Entra Domain Services SKU を選択する
マネージド ドメインの作成時に、異なるレベルのパフォーマンスと機能を提供するさまざまな SKU から選べます 。 認証要求に Microsoft Entra Domain Services インスタンスを使う ESP クラスターと他のアプリケーションの数によって、組織に適した SKU が決まります。 マネージド ドメインの CPU 使用率が高い、またはビジネス要件が変わる場合は、SKU をアップグレードするとよいでしょう。
Microsoft Entra Domain Services のインスタンス
.onmicrosoft.com domain
を使用してインスタンスを作成します。 こうすると、ドメインにサービスを提供する DNS サーバーは複数存在しません。- LDAPS 用の自己署名証明書を作成し、Microsoft Entra Domain Services にアップロードします。
- クラスターのデプロイに、ピアリングされた仮想ネットワークを使用します (HDInsight ESP クラスターをデプロイするチームが多数ある場合はこれが役立ちます)。 これにより、ドメイン コントローラーを使用して仮想ネットワーク上のポート (NSG) を開く必要がなくなります。
- 仮想ネットワークの DNS を適切に構成します (Microsoft Entra Domain Services ドメイン名は、ホスト ファイル エントリなしで解決する必要があります)。
- アウトバウンド トラフィックを制限している場合は、HDInsight でのファイアウォールのサポートに関するページを必ずお読みください。
Microsoft Entra Domain Services レプリカ セットを検討する
Microsoft Entra Domain Services マネージド ドメインを作成する場合は、一意の名前空間を定義すると、選んだ Azure リージョンに 2 つのドメイン コントローラー (DC) がデプロイされます。 この DC のデプロイは、レプリカ セットと呼ばれます。 レプリカ セットを追加すると、回復性が備えられ、Azure HDInsight クラスターにとって重要な認証サービスの可用性が確保されます。
範囲指定されたユーザー/グループ同期を構成する
ESP クラスターに対して Microsoft Entra Domain Services を有効にすると、Microsoft Entra ID のすべてのユーザーとグループを同期するか、範囲指定されたグループとそのメンバーを同期するかを選べます。 最適なパフォーマンスのためには、"範囲指定" された同期を選ぶことをお勧めします。
範囲指定された同期は、さまざまなグループ選択で変更する、または必要に応じて "すべて" のユーザーとグループに変えることもできます。 Microsoft Entra Domain Services インスタンスを削除してもう一度作成しない限り、同期の種類を "すべて" から "範囲指定" には変更できません。
Microsoft Entra ID から Microsoft Entra Domain Services に同期されるプロパティ
- Microsoft Entra Connect では、オンプレミスから Microsoft Entra ID に同期します。
- Microsoft Entra Domain Services では、Microsoft Entra ID から同期します。
Microsoft Entra Domain Services では、定期的に Microsoft Entra ID からオブジェクトを同期します。 Azure portal の Microsoft Entra Domain Services ブレードには、同期の状態が表示されます。 同期の各ステージでは、一意のプロパティが競合状態になり、名前が変更されることがあります。 Microsoft Entra ID から Microsoft Entra Domain Services へのプロパティ マッピングに注意してください。
詳細については、「Microsoft Entra UserPrincipalName の作成」および Microsoft Entra Domain Services の同期のしくみに関するページを参照してください。
パスワード ハッシュの同期
- パスワードの同期は、他のオブジェクトの種類とは異なります。 Microsoft Entra ID と Microsoft Entra Domain Services では、元に戻せないパスワード ハッシュのみが同期されます
- AD Connect を介してオンプレミスから Microsoft Entra ID へと、実行できるようにする必要があります
- Microsoft Entra ID から Microsoft Entra Domain Services への同期は自動的に行われます (待機時間は 20 分未満です)。
- パスワード ハッシュが同期されるのは、変更されたパスワードがある場合のみです。 パスワード ハッシュの同期を有効にすると、既存のパスワードはすべて、不可逆的に保存されるため、自動的に同期されません。 パスワードを変更すると、パスワード ハッシュが同期されます。
Ambari LDAP 同期を日次実行に設定する
新しい LDAP ユーザーを Ambari に同期するプロセスは、1 時間ごとに実行されるように自動で構成されます。 1 時間ごとに同期を実行すると、クラスターのヘッドノードと AD インスタンスに過剰な負荷が発生する場合があります。 パフォーマンスを向上させるには、Ambari LDAP 同期を実行する /opt/startup_scripts/start_ambari_ldap_sync.py スクリプトを変更して、1 日 1 回の実行にすることをお勧めします。 このスクリプトは crontab ジョブを実行し、クラスター ヘッドノードの "/etc/cron.hourly/" ディレクトリに格納されます。
1 日 1 回の実行にするには、次の手順を実行します。
- hn0 への ssh 接続
- スクリプトを cron daily フォルダーに移動します:
sudo mv /etc/cron.hourly/ambarildapsync /etc/cron.daily/ambarildapsync
- crontab ジョブに変更を適用します:
sudo service cron reload
- hn1 に ssh で接続して、ステップ 1 から 3 を繰り返します
必要に応じて、Ambari REST API を使用して、手動で新しいユーザーとグループの同期をすぐに実行できます。
コンピューター オブジェクトの場所
各クラスターは、単一の OU に関連付けられています。 内部ユーザーは、OU 内にプロビジョニングされます。 すべてのノードは、同じ OU にドメイン参加しています。
Active Directory 管理ツール
詳しくは、管理ツールのインストールに関する記事をご覧ください。
トラブルシューティング
クラスターの作成に繰り返し失敗する
最も一般的な理由:
- DNS 構成が正しくないため、クラスター ノードのドメイン参加に失敗する。
- NSG の制限が厳しすぎるため、ドメイン参加が阻止される。
- マネージド ID に十分なアクセス許可がない。
- (別のライブ クラスターまたは削除されたクラスターに対して) クラスター名の最初の 6 文字が一意ではない。
認証のセットアップと構成
ユーザー プリンシパル名 (UPN)
- すべてのサービスに小文字を使用してください。UPN は ESP クラスターでは大文字と小文字が区別されませんが、
- Microsoft Entra Domain Services では、UPN プレフィックスが両方の SAMAccountName に一致する必要があります。 メール フィールドとの一致は必要ありません。
Ambari 構成での LDAP プロパティ
HDInsight クラスター構成に影響を与える Ambari プロパティの完全な一覧については、Ambari LDAP 認証のセットアップに関するページを参照してください。
ドメイン ユーザー keytab を生成する
ESP クラスター作成プロセス中に、すべてのサービス keytab が自動的に生成されます。 クラスターと、認証が必要なその他のサービスやジョブとの間にセキュリティで保護された通信を有効にするには、ドメイン ユーザー名の keytab を生成します。
クラスター VM の 1 つで ktutil を使用して、Kerberos keytab を作成します。
ktutil
ktutil: addent -password -p <username>@<DOMAIN.COM> -k 1 -e aes256-cts-hmac-sha1-96
Password for <username>@<DOMAIN.COM>: <password>
ktutil: wkt <username>.keytab
ktutil: q
TenantName と DomainName が異なる場合は、-s オプションを使って SALT 値を追加する必要があります。 Kerberos keytab 作成時の適切な SALT 値を決めるには、HDInsight の FAQ ページをチェックしてください。
LDAP 証明書の更新
HDInsight は、Enterprise セキュリティ パッケージ (ESP) を備えたクラスターに使用されるマネージド ID の証明書を自動的に更新します。 ただし、Microsoft Entra Domain Services と ADLS Gen2 で異なるマネージド ID が使用されると、更新プロセスが失敗する場合があるという制限があります。 次の 2 つのレコメンデーションに従い、確実に証明書を正常に更新できるようにします。
- ADLS Gen2 と Microsoft Entra Domain Services のクラスターで異なるマネージド ID を使用する場合は、両方に、Storage BLOB データ所有者および HDInsight ドメイン サービス共同作成者ロールを割り当てる必要があります。
- HDInsight クラスターでは、証明書の更新やその他のメンテナンスにパブリック IP が必要なため、クラスター上のパブリック IP を拒否するポリシーはすべて削除する必要があります。