📡

[Azure]リソース管理のプライベートエンドポイントの接続先制限

3 min read

はじめに

少し前に、Azureの「リソース管理のプライベートエンドポイント」の検証記事を書きました。

https://zenn.dev/tomot/articles/342ddb164aa459
謳い文句通りに利用できることを確認しましたが、1点検証残がありましたので、今回はその残について書きたいと思います。

検証項目

プライベートエンドポイントのメリットとして、「接続先のリソースを絞ることができる」という点があります。
例えば、ストレージアカウントAに対して作成したプライベートリンクを作成した場合、そのエンドポイントにアクセスすると「ストレージアカウントA」にしかアクセスできず、別の「ストレージアカウントB」リソースにはアクセスできません。
さて、今回検証対象としている「リソース管理のプライベートエンドポイント」は、接続先の制限ができるのでしょうか?

検証内容

以前の検証記事に書いた通り、Private Linkの作成時にScopeとして「ルート管理グループ」を指定しています。
管理グループは、あるAzure ADテナントに紐づけられたサブスクリプション群の集合ですので、当然「その管理グループに含まれるサブスクリプションしか操作できない」という動作が期待されるわけですが、「ほかのAzure ADテナントと紐づけられたサブスクリプションの操作が可能か」を検証していませんでしたので、試してみたいと思います。

検証結果

2021/11/22追記
プライべートDNSゾーンがVNETに関連付けされていますが、その場合bastionでのVMへの接続ができません。bastionサブネットでの名前解決に悪影響があるようです。
先にVMに接続してからプライベートDNSゾーンを設定すれば、そのまま利用継続できますがご注意ください。

環境環境

前回構築したのは下記の環境です。

今回は、testfw(Azure FW)のルートテーブルから「management.azure.com」への通信許可を明示的に削除して、Private Endpoint経由で通信することを確認できるようにします。

なお、この構成通り作成すると、bastion経由でtestVMにログインすることができません。
正確に原因を突き止めきれていないのですが、bastionにて*.azure.comへの名前解決・アクセスが必要なようで、当該VNETでプライベートDNSゾーンが有効だとVMへの接続に失敗します。
なので、一度プライベートゾーンとVNETの仮想ネットワークリンクを削除(VNET内での名前解決をパブリックなDNSが担う)し、Bastion経由でRDPを確立後、仮想ネットワークリンクを再作成しています。

検証①(自サブスクリプションに対する操作)

前回実施した検証と同じ内容ですが、対比のために再実行します。

ManagedIDを使った環境へのログイン(az login --identity)

ManagedIDを使用していますので、自分(VM)の所属するAzureADテナントに関する操作なのは明確です。「id」のところにサブスクリプションIDと、「tenantId」のところにAzureADのテナントIDが見えていますね。

リソースグループの表示(az group list)

説明は省略していますが、ManagedIDには、自サブスクリプションに対する共同作成者権限を付けていますので、自分の所属するサブスクリプションに関する情報取得を行っていることになります。

VMの表示(az vm list)

分かりやすいように、自分自身が一覧に出てくることを確認します。
スクリーンショットから上下を削っていますが、対象のVM名やシステム割り当てマネージドIDが有効化されていることが確認できます。

検証②(他サブスクリプションに対する操作)

別のAzureADのユーザーを使い、ログインを実施して操作を確認していきます。
ログイン自体はできるはずですが、その後のリソース情報の取得には失敗するはず…

ユーザープリンシパル/PWを使った環境へのログイン

まず、全然関係のないAzureADのユーザープリンシパルを使って、ログインします。

想定通り、ログインは可能でした。

リソースグループの表示

ログインしたユーザーは、あるサブスクリプションの所有者権限を持っています。権限は有りますが、後はPrivateLinkの仕様次第…

あれ?全然別のサブスクリプションIDのリソースグループが見えてしまっています。

VMの表示

念のため、VMも見てみます。

やはり、別のサブスクリプションに居るVMが見えています。

検証結果

「リソース管理のプライベートエンドポイント」は、接続先の制限ができるのか?を確認しましたが、上記検証の通り、「接続先は制限できない」ということが分かりました。(他のテナントに紐づく他のサブスクリプションの操作ができてしまう)

おわりに

「リソース管理のプライベートエンドポイント」まだプレビュー機能ですので、この後制約や使い方が変わる可能性は大いにあります。あくまで、「現時点(2021/11/16)では」ということに留意の上、見ていただければと思います。

Discussion

ログインするとコメントできます