プライベートエンドポイントと似た機能で、サービスエンドポイントというものがあります。
サービスエンドポイントは、vNetに配置されたAzure VMからPaaSへの通信時に、インターネットに出ずにMicrosoftネットワーク内で閉じたアクセス(ルーティング)が可能です。あくまでもルーティングなので、対象のPaaSにはプライベートIPは付与されません。
プライベートエンドポイントでは、PaaSにvNet内のプライベートIPを割り当てることができるため、オンプレからExpress Route(Private Peering)経由で直接アクセスが可能です。
今回はStorage Accountにプライベートエンドポイント設定を入れて、オンプレからExpress Route(Private Peering)を介してアクセスすることが可能かをみていきます。
前提
- Express Route(Private Peering)接続されたvNetが存在すること
- Storage Accountが作成されていること
テスト用ファイルの仕込み
Private Link(プライベートエンドポイント)を作成する
-
以下のように設定します。
-
プライベートエンドポイント接続させたい仮想ネットワークとサブネットを選択します。ここは空のサブネットでなくてよいです。今回はExpressRoute(Private Endpoint)の仮想ネットワークを選択します。
-
プライベートDNSは有効にしておきます。オンプレから接続する分には使わないのですが、同じ仮想ネットワークからアクセスする場合、プライベートDNSがBlobのプライベートIPを名前解決してくれます。
-
ここまで入力してプライベートエンドポイントを作成します。数分でプライベートエンドポイントが作られます。
プライベートエンドポイント以外からのアクセス拒否
接続確認
ストレージアクセスキー取得
Cloud Shellから接続確認
- まずはパブリックアクセスが不可であることを確認するためにCloud Shellを開きます。
- 以下コマンドを実行し、BLOB一覧が表示されるか確認します。
az storage blob list -c [Your Storage Blob Container Name] --account-key [Your Storage Access Key] --account-name [Your Storage Account Name]
- 以下のようなエラーメッセージが出力し、アクセスがブロックされていることが分かります。想定通りです。
The request may be blocked by network rules of storage account. Please check network rule set using 'az storage account show -n accountname --query networkRuleSet'.
If you want to change the default action to apply when no rule matches, please use 'az storage account update'.
自PCから接続確認
- まずは自PCからの名前解決を確認します。
ping kwhrblobendpointtest.blob.core.windows.net
blob.tyo20prdstr07a.store.core.windows.net [20.60.248.65]に ping を送信しています
- パブリックIPを引いてきてますね。独自DNSに設定すればよいのですが、今回は環境がないため、hostsで上書きしてみます。
ping kwhrblobendpointtest.blob.core.windows.net
kwhrblobendpointtest.blob.core.windows.net [10.x.x.x]に ping を送信しています
- プライベートIPを設定しました。
- それではこの状態でアクセス可能かを確認してみます。Azure CLIで以下コマンドを実行します。
az storage blob list -c [Your Storage Blob Container Name] --account-key [Your Storage Access Key] --account-name [Your Storage Account Name]
- 今回は問題なくBlob一覧が表示されたはずです。Express Route(Private Peering)経由もしくはプライベートエンドポイント接続先仮想ネットワークからのみアクセスが可能な状態になっています。
- もしオンプレがProxyを使っている場合は、PCの環境変数NO_PROXYに
.blob.core.windows.net
を設定してあげればProxyを介さずにExpressRoute経由になります。
以上