クラウドエンジニアブログ

Azure におけるデータガバナンス(Azure Purview 触ってみた)~認証周り~

human05

古林

みなさまこんにちは。クラウドアーキテクトの卵です。

相も変わらずリモートワーク生活です。季節柄もあり、ほとんど外に出ていません。
快適&気ままな引きこもり中ですが、いつもの夏よりも換気と水分補給はしっかりしています。室内でも熱中症になる場合があると聞いたので、水分を頻繁&ちびちびと補給しています。内臓に負担をかけないよう、水分は常温がオススメです。
あとは、冷房で身体が冷えすぎないように室温を調整したり、座りっぱなし防止のためストレッチやゆるい筋トレをやってみたり、生活リズムを崩さないように睡眠時間を決めたり。。。
若いときは何も考えてませんでしたが、2・3 年前ぐらいから健康を意識し始めました。・・・歳かなぁ。。。




1. はじめに

前回のブログで、Azure Purview の作成からデータのスキャンまでをご紹介しました。
前回のブログに記載した範囲については、検証の際に何ら困ったことは無く、サクサク検証できたのですが、認証周りでちょっと考慮が必要でした。
(「所有者」権限なら何ら問題無いんですが・・・新しい検証環境の私のアクセス制御 (ロール) が「共同作成者」なので、認証や権限周りはちょっと鬼門なんですよね。。。サービスプリンシパルはまず NG ですし。。。)

前回のブログでデータソースとして Azure SQL Database と Azure Data Lake Storage Gen2 (ADLS Gen2) を取り上げたので、Azure Purview からこれら 2 つのリソースをスキャンできるようになるまでの権限設定について、備忘録として記載します。




2. 必要な権限

Azure Purview から Azure SQL Database と Azure Data Lake Storage Gen2 (ADLS Gen2) にアクセスして、スキャンを実施するまでに必要な権限について、本ブログでは以下の権限で実施しています。

<本ブログの内容で実施した権限>

  • サブスクリプションに対する共同作成者
  • Azure SQL Database で ALTER ANY USER 権限
    ※後述する Active Directory 管理者が ALTER ANY USER 権限を持っています。
    (データベースサーバーを作成する際に作成するユーザー (サーバー管理者) でも OK だったはず)

上記の権限で Azure Purview、Azure SQL Database、ADLS Gen2 を作成して、後述の権限設定を行っています。

Azure Purview では、Purview アカウントを作成したプリンシパル (ユーザーやアプリケーション) に対して、Azure Purview に対するすべてのアクセス許可が与えられるようです。
Purview アカウント作成者以外が Azure Purview を使えるようにするためには、Purview アカウントからアクセス制御 (IAM) より、下図の「Azure Purview の定義済みのデータ プレーン ロール」を追加してあげる必要があります。

【参考:Azure Purview のデータ プレーンでのロールベースのアクセス制御】
https://docs.microsoft.com/ja-jp/azure/purview/catalog-permissions




3. マネージド ID の利用 (SQL Database)

Azure Purview から Azure SQL Database への認証は、以下 3 つの方法がサポートされています。

<認証方法>

認証方法 概要
SQL 認証 Azure SQL Database 内のユーザー ID / パスワードを使用。※データベースサーバーへの認証を Azure AD 認証のみにしてしまうと利用できないので注意。
サービスプリンシパル ID とアクセスの管理機能を Azure AD に委任する。Azure AD にアプリケーションを登録して使用。
マネージド ID Azure リソースを識別するためのクライアント ID とパスワードを、プラットフォーム側 (Azure 内部) で自動生成・自動管理するサービス。

【参考:Azure SQL Database の登録とスキャン】
https://docs.microsoft.com/ja-jp/azure/purview/register-scan-azure-sql-database

上記認証方法より、マネージド ID 認証か SQL 認証かで迷いましたが、検証環境でもマネージド ID 認証が利用できそうだったので、前回のブログではマネージド ID を使用しています。

認証方法ざっくり絵 (SQL Database)

では、実際にマネージド ID 認証を設定してみましょう。

1. まずは Azure SQL Database に Active Directory 管理者を設定します。
Azure ポータルより、SQL Database をホストする SQL Server を選択し、「Active Directory 管理者」から「管理者の設定」をクリックします。

2. 管理者を検索・設定して「選択」ボタンをクリックします。
※環境によっては、メールアドレスや ID を全て入れないと出てこないかもしれません。

3. 忘れずに「保存」をクリックします。
これで Active Directory 管理者の設定は完了です。

4. スキャン対象のデータベースにマネージド ID を登録します。
SQL Server Management Studio (SSMS) 等で SQL Database にアクセスします。
※ここでは、SSMS で実行しています。
※上述の「Active Directory 管理者」でログインしてください。

5. スキャンしたいデータベースに対し、以下のコマンドを実行します。
※赤字は Purview のマネージド ID を入力してください。大抵 Purview アカウント名と同じになります。


CREATE USER [マネージド ID] FROM EXTERNAL PROVIDER  
GO  
	
EXEC sp_addrolemember 'db_owner', [マネージド ID]  
GO  
	

これでデータベースに対してマネージド ID が登録できました。

6. 5.まで設定が完了したら、Azure Purview でスキャンの作成と実行の画面で「Credential」の値に「Purview MSI」を選択すれ ば、Azure Purview から Azure SQL Database に対して認証できます。

上記の方法は、Azure Data Factory から Azure SQL Database に対しての認証の流れとほぼ同様になります。マネージド ID を使用する場合、マネージド ID は基本的に作成したリソースの名前と同じになるため、先述した SQL の赤字部分を変更するだけで OK です。

【参考:Azure リソースのマネージド ID 認証】
https://docs.microsoft.com/ja-jp/azure/data-factory/connector-azure-sql-database#managed-identities-for-azure-resources-authentication




4. アカウントキーの利用 (ADLS Gen2)

Azure Purview から Azure Data Lake Storage Gen2 (ADLS Gen2) への認証は、以下 3 つの方法がサポートされています。

<認証方法>

認証方法 概要
アカウント キー ストレージ アカウントを作成すると生成される共有キーを使用。
サービスプリンシパル ID とアクセスの管理機能を Azure AD に委任する。Azure AD にアプリケーションを登録して使用。
マネージド ID Azure リソースを識別するためのクライアント ID とパスワードを、プラットフォーム側 (Azure 内 部) で自動生成・自動管理するサービス。

【参考:Azure Data Lake Storage Gen2 の登録とスキャン】
https://docs.microsoft.com/ja-jp/azure/purview/register-scan-adls-gen2

ADLS Gen2 もマネージド ID で実施したかったのですが、ADLS Gen2 の「アクセス制御 (IAM)」から Azure Purview アカウントに「ストレージ BLOB データリーダー」の権限を付与する必要があったので断念しました。。。
(私の Azure アカウントに付与されているロール的に NG でした。。。)
そのため、前回のブログではアカウントキーを使用しています。

<認証方法ざっくり絵 (ADLS Gen2) >

アカウントキー認証についても設定してみましょう。
※設定の前に、Azure Key Vault は作成しておいてくださいね。

1. ADLS Gen2 ストレージ アカウントから、「設定」→「アクセスキー」をクリックし、Key 1 or Key 2 のどちらかをコピーしま す。後で Key Vault の設定の際に使うので、コピーした Key 1 or Key 2 はメモ帳等に一時保管しておくと良いです。
※「キーの表示」ボタンをクリックするとコピーできるようになります。

2. Key Vault (キーコンテナ) に移動し、「設定」→「シークレット」をクリック後、「+生成/インポート」をクリックします。

3. 以下を入力し「作成」ボタンをクリックします。

<シークレットの作成 入力値 >

シークレット 入力値
アップロード オプション 手動 / 証明書 のいずれかを選択。※今回は「手動」を選択しています。※「証明書」は、現在非推奨となっているようです。
名前 シークレットを特定する名前を入力。※シークレット名に使用できるのは英数字とダッシュのみ。
シークレットの値を入力。ここに 1. でコピーした Key 1 or Key 2 を 入力します。
コンテンツの種類 (省略可能) コンテンツの種類を入力。※何のシークレットかを記載するメモみたいなもののようです。
アクティブ化する日を設定しますか? チェックを入れるといつアクティブ化するかの日時設定が選択可能。※今回はすぐ有効化したいので、チェックを外しています。
有効期限を設定しますか? チェックを入れるといつ非アクティブ化するかの日時設定が選択可能。※今回はチェックを外しています。
有効ですか? シークレットを有効にするかを選択。※今回は「はい」にしています。

これでシークレットが作成されました。

4. 3. で作成した Azure Key Vault インスタンスを Azure Purview アカウントに関連付ける必要があります。Azure Purview Studio から設定してみましょう。

【参考:Azure Purview アカウントに Azure Key Vault の接続を作成する】
https://docs.microsoft.com/ja-jp/azure/purview/manage-credentials#create-azure-key-vaults-connections-in-your-azure-purview-account

5. Azure Purview Studio を開き、「Management Center」→「Credential」を選択し、「Manage Key Vault connections」をクリックします。

「+New」をクリックします。

6. 以下を入力し、「Create」ボタンをクリックします。

<New Key Vault 入力値 >

New Key Vault 入力値
Name Azure Purview 内での Key Vault 識別名を入力。※Key Vault と同じ名前でも良いと思います。
Description Key Vault の説明を入力。※必須ではないので、空欄でも OK です。
Subscription Azure Purview アカウントに関連付けたい Key Vault があるサブスクリプションを選択。
Key Vault name Azure Purview アカウントに関連付けたい Key Vault の名前を選択。※「Subscription」を選択すると、自動的に絞り込まれます。

7. 6. で「Create」ボタンをクリック後、以下のようなポップアップが出てきました。
(内容は「Azure KeyVault への Purview マネージド ID アクセスを許可したことを確認してください。」というものです。)
ポップアップ上の「Confirm」をクリックします。

これで Key Vault が Azure Purview アカウントに正常に関連付けられている状態になりました。

8. 7. で Azure Key Vault インスタンスを Azure Purview アカウントに関連付けたのですが、このままでは Azure Purview から AzureKey Vault にアクセスできません。
Purview マネージド ID に Azure Key Vault へのアクセス権を付与する必要があります。

【参考:Purview マネージド ID に Azure Key Vault へのアクセス権を付与する】
https://docs.microsoft.com/ja-jp/azure/purview/manage-credentials#grant-the-purview-managed-identity-access-to-your-azure-key-vault

Azure ポータルより、Azure Purview アカウントに関連付けた Azure Key Vault (キーコンテナ) に移動し、「設定」→「アクセスポリシー」をクリック後、「+アクセスポリシーの追加」をクリックします。

9. 「プリンシパルの選択」で Purview マネージド ID を検索し、「選択」ボタンをクリックします。
※Purview マネージド ID は、Purview アカウントの名前と同じです。

10. 「シークレットのアクセス許可」を設定し「追加」ボタンをクリックします。
※「取得」と「一覧」にチェックを入れます。

11. 忘れずに「保存」をクリックします。これでアクセスポリシーは完了です。

12. Azure Purview アカウントに Azure Key Vault の接続を許可しただけではスキャンできません。(まだ終わらないの!?あともう少し・・・この設定で最後です。)
新しい資格情報 (Credentials) を作成し、Key Vault 経由で Purview → ADLS Gen2 にアクセスできるようにします。

【参考:新しい資格情報を作成する】
https://docs.microsoft.com/ja-jp/azure/purview/manage-credentials#create-a-new-credential

Azure Purview Studio を開き、「Management Center」→「Credential」を選択し、「+New」をクリックします。

13. 以下を入力し「Create」ボタンをクリックします。
※今回、ADLS Gen2 にアクセスする方法としてアカウントキーを使っているため、「Authentication method」は「Account Key」を指定します。

<New credential 入力値 >

New Key Vault 入力値
Name Azure Purview 内での credential 識別名を入力。
Description credential の説明を入力。※必須ではないので、空欄でも OK です。
Authentication method 認証方法を選択。※今回は ADLS Gen2 にアカウントキーでアクセスするため、「Account Key 」を選択しています。
Key Vault connection 6. で指定した「Name」を選択。
Secret name 3. で指定した「名前」を選択。
Secret version シークレットにバージョンがある場合、ここに記載。※今回は最新バージョンしか存在しない ため、空欄にしています。

14. 資格情報 (Credentials) が作成できました。

14.まで設定が完了したら、Azure Purview でスキャンの作成と実行の画面で「Credential」の値に 14. で作成した credential の「Name」を選択すれば、Azure Purview から ADLS Gen2 に対して認証できます。




5. おわりに

今回は Azure Purview から Azure SQL Database、Azure Data Lake Storage Gen2 (ADLS Gen2) にアクセスするための認証方法を紹介しました。

Azure リソース間の認証は、大抵の場合複数の方法があります。推奨の方法 (※1) も Microsoft の Docs に記載されていることが多いのですが、推奨の方法が取れない場合でも複数の手段があるのはありがたいですね。

※1:大抵の場合、マネージド ID が推奨されています。認証に必要なクレデンシャル (=パスワード) の管理をプラットフォーム側で実施することで、ユーザー側での管理が不要という、大きなメリットがあります。

今回、いや、今回だけではないのですが、認証の部分は私自身あまり得意では無いため、少し手間取ってしまいました。。。かつて、認証周りの知識が豊富な同僚 (クラウドコンサルタント)が「認証認可と権限まわりをおさえてないと、やりたいことなんもできんなぁ」 (原文ママ) と言っていたのも、心の底から頷けます。

前々回前回と続いた Azure Purview シリーズも、今回で最後です。
最後までお読みいただき、ありがとうございました!

【総合】お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録