Azure HDInsight での SQL Database 認証にマネージド ID を使用する
HDInsight では、クラスター オファリング内で SQL データベースを認証し、より安全な認証メカニズムを提供するためのマネージド ID オプションが追加されました。
この記事では、HDInsight クラスターの作成時に SQL Database 認証にマネージド ID (MSI) オプションを使用するプロセスについて説明します。
マネージド ID (MI) オプションは、次のデータベースで使用できます。
データベース | Host on Behalf of (HoBo) DB | Bring Your Own (BYO) DB |
---|---|---|
Ambari | ✅ | ✅ |
Hive | ✅ | ✅ |
Oozie | ✅ | ✅ |
Ranger (ESP) | ❌ | ❌ |
Note
- マネージド ID (MI) は現在、パブリック リージョンでのみ利用可能です。
- MI オプションは、既定では有効になっていません。 有効にするには、サブスクリプションとリージョンの詳細を記載したサポート チケットを送信します。
重要
- クラスターの操作が中断される可能性があるため、クラスターの再作成後にマネージド ID を更新しないことをお勧めします。
- 同じ名前で MSI を再作成する場合、名前が変更されていない場合でも新しい MSI には異なるオブジェクト ID とクライアント ID が割り当てられるため、ユーザーは包含ユーザーを再作成し、ロールを再割り当てする必要があります。
Azure portal でクラスターを作成するときにマネージド ID を使用する手順
クラスターの作成時に、ストレージ セクションに移動し、Ambari/Hive/Oozie 用の SQL データベースを選択します。 認証方法としてマネージド ID を選択します。
SQL Database で認証するためにマネージド ID を選択します。
対応する SQL データベースにマネージド ID を持つ包含ユーザーを作成します。
Azure SQL データベース クエリ エディターで次の手順に従って、データベース ユーザーを作成し、読み取り/書き込みアクセス許可を付与します。 Ambari、Hive、Oozie などのさまざまなサービスで使用する各 SQL Database に対して、次の手順を実行します。
Note
ユーザー名には、ユーザー定義のサフィックスによって拡張された元の MSI 名が含まれている必要があります。 ベスト プラクティスとして、サフィックスにはオブジェクト ID の最初の部分を含めることができます。 マネージド ID のオブジェクト ID は、マネージド ID ポータル ページのポータルから取得できます。
次に例を示します。
- MSI 名: contosoMSI
- オブジェクト ID:
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
- user_name は
contosoMSI-2ba6c
CREATE USER {user_name} FROM EXTERNAL PROVIDER WITH OBJECT_ID={object id of cluster managed identity}; ALTER ROLE db_datareader ADD MEMBER {user_name}; ALTER ROLE db_ddladmin ADD MEMBER {user_name}; ALTER ROLE db_datawriter ADD MEMBER {user_name};
Note
ロール
db_executor
、db_view_def
、およびdb_view_state
がデータベースに既に定義されている場合は、後続の手順に進む必要はありません。CREATE ROLE db_executor; GRANT EXECUTE TO db_executor; ALTER ROLE db_executor ADD MEMBER {user_name}; CREATE ROLE db_view_def; GRANT VIEW DEFINITION TO db_view_def; ALTER ROLE db_view_def ADD MEMBER {user_name}; CREATE ROLE db_view_db_state; GRANT VIEW DATABASE STATE TO db_view_db_state; ALTER ROLE db_view_def ADD MEMBER {user_name};
必要な詳細を入力したら、ポータルでのクラスターの作成に進みます。