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

サービスエンドポイントポリシーによる特定リソースへのアクセス許可

uchizono-toshiteru

内苑 利映

1. はじめに

皆さんこんにちは!
今回は先日プレビュー機能としてリリースされたばかりの 「Virtual network service endpoint policies」 についてご紹介したいと思います。

2. 機能概要

サービスエンドポイントポリシーという名の通り、サービスエンドポイントに対してより詳細にポリシーを定義することが可能な機能です。

そもそもサービスエンドポイントとは?という方は以下の Microsoft 社の公開情報をご参照ください。
参考: 仮想ネットワーク サービス エンドポイント

サービスエンドポイントポリシーで提供される機能を掻い摘んで説明すると、これまでサービスエンドポイントで大きな括りとして定義されていた「ストレージアカウントへのアクセス」が「”特定の”ストレージアカウントへのアクセス」というより細かい定義を可能とする機能です。
これまでは、サービスエンドポイントを有効にし、ストレージアカウントへのアクセスを特定のサブネットに制限するところまではできていましたが、アクセスする側のサブネットに所属する VM は、任意のストレージアカウントであればどこでも接続できてしまうという課題を抱えていました。

任意のストレージアカウントであればどこでも接続できてしまう


この課題の対応策としてサービスエンドポイントポリシーを使用することにより、アクセスする側のトラフィックの制限が可能となり、送受信ともにセキュアな構成を保つことができるようになりました。

サービスエンドポイントポリシーを使用すると

このサービスエンドポイントポリシーは、現状(2018年10月10日現在)プレビューとして提供されており、下記2つのリージョンで利用可能となっています。

  • 米国中西部
  • 米国西部 2

3. 設定

それではサービスエンドポイントポリシーを以下の手順の通り実際に設定して、その動作を見ていきます。

a. サービスエンドポイントポリシーの作成
b. 適用先のネットワーク作成


a. サービスエンドポイントポリシーの作成

まずは [すべてのサービス] - [その他] の中にある [サービス エンドポイント ポリシー] を選択します。

サービスエンドポイントポリシー

[追加] ボタンを選択すると、以下のような作成画面に遷移します。

サービスエンドポイントポリシーの作成


基本情報を入力後、ルールの追加画面に遷移します。

ルールの追加画面

[リソースを追加する] を選択し、ポリシーを定義します。

ポリシーを定義

[サービス] のリストから接続を許可するサービスの種類を選択するのですが、現在のプレビューでは [Microsoft.Storage] のみが表示されています。今後はサービスエンドポイントにリスト表示されるサービスと同様の一覧が追加されると予想されます。
また、[スコープ] では、以下のように許可するストレージアカウントの範囲を選択できます。

許可するストレージアカウントの範囲を選択


用途によってある程度柔軟な接続制御を行えるようになっており、単一のストレージアカウントに接続を限定することも、特定のリソースグループやサブスクリプション内で利用される複数のストレージアカウントに接続を許可することもできるようになっています。
今回は [sepplabstr01] という単一の検証用ストレージアカウントに接続を限定したポリシーを作成します。


b. 適用先のネットワーク作成

続けて、このサービスエンドポイントポリシーを紐づけるネットワークリソースを作成します。今回は、単なる VNet の作成のため、変更が必要な個所のみをご紹介します。
以下の図の通り、[場所] をプレビュー提供対象の 米国中西部/米国西部2を選択すると、サービスエンドポイントポリシーの項目が追加されています。

適用先のネットワーク作成


ここで、先ほど作成したポリシーを選択すると、サブネットにサービスエンドポイントポリシーが紐づきます。

サブネットにサービスエンドポイントポリシーが紐づきます

これで準備完了です。実際にポリシーが効いているか、該当サブネットに VM を構築して見ていきます。


4. 動作確認

今回はわかりやすく、同一リソースグループ内にストレージアカウントを2つ用意しました。

ストレージアカウントを2つ用意

該当サブネット上の VM から

[sepplabstr01] に接続可
[rbactestblob] に接続不可

という結果になれば OK です。

まずは何の縛りもない任意のストレージアカウントにアクセス可能なクライアント PC から、どちらのストレージアカウントにも接続可能なことを確認します。

接続可能なことを確認

以上の通り、ストレージ内のデータにアクセス権限を持つユーザーの資格情報を用いて、各ストレージアカウントのコンテナ内の BLOB 一覧を表示できました。(こちらの処理内容については別記事にて詳細をご紹介いたします)

それでは、同一の処理をサービスエンドポイントポリシーが紐づいているサブネット上の VM にて実施してみます。

サブネット上の VM にて実施

想定通り、

[sepplabstr01] に接続可
[rbactestblob] に接続不可

という結果となりました。
ただし、このサービスエンドポイントポリシーは、サービスエンドポイントが有効になっているサブネットのリージョンに紐づいてトラフィックのフィルターが行われているため、サブネット、または VM に適用している NSG がデフォルトのままであると、他リージョンのストレージアカウントへのトラフィックは自動的にフィルタされず、普通に接続できてしまいます。そのため、NSG のサービスタグを利用し、サブネットのリージョンと同じリージョンのストレージリソースにのみ接続可能になるよう送信規則を設定する必要があります。

デフォルトのルールではインターネット方向の通信が全て許可されているため、今回の検証のように米国西部2のリージョンを使用する場合、以下のようにルールを構成すると良いかと思います。

Allow_Storage.WestUS 2
All_Deny


5. まとめ

現状のプレビュー段階では、絞り込みが可能なリソースがサブネットのリージョンに依存する仕組みとなっていますが、今後の動向が気になる箇所かと思います。

今回の記事は以下の公開情報を参考に執筆させていただきました。
https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-service-endpoint-policies-overview

Azure でこんなことができたらいいな、と考えていると、ふと求めていた機能が提供され始めるといった現象が、個人的な主観ですが最近どんどん増えてきているように思えます。
今回のプレビューは、企業における PaaS 活用を始めるにあたってのセキュリティ観点での懸念を払拭しうる機能かと思いますので、これを機に PaaS 活用の検討を前に進めていけることを願っています。 正式リリースが待ち遠しいですね!



次回予告
  • RBAC を使用した ストレージアカウントデータ へのアクセス管理



【総合】お問い合わせ

ソリューションに関する全般的なお問い合わせはお気軽にご相談ください。

ピックアップ

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