サービス エンドポイント ポリシーを作成して関連付ける
[アーティクル] 09/30/2024
1 人の共同作成者
フィードバック
この記事の内容
サービス エンドポイント ポリシーを使用すると、サービス エンドポイントを経由する特定の Azure リソースへの仮想ネットワーク トラフィックをフィルター処理できます。 サービス エンドポイント ポリシーをよく理解していない場合は、サービス エンドポイント ポリシーの概要 に関するページを参照してください。
このチュートリアルでは、次の作業を行う方法について説明します。
仮想ネットワークを作成します。
サブネットを追加し、Azure Storage に対してサービス エンドポイントを有効にします。
2 つの Azure ストレージ アカウントを作成し、仮想ネットワーク内のサブネットからそれへのネットワーク アクセスを許可します。
いずれかのストレージ アカウントへのアクセスのみを許可するサービス エンドポイント ポリシーを作成します。
サブネットに仮想マシン (VM) をデプロイします。
サブネットから許可されているストレージ アカウントへのアクセスを確認します。
サブネットから許可されていないストレージ アカウントへのアクセスが拒否されることを確認します。
前提条件
Azure Cloud Shell
Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。
Azure Cloud Shell を開始するには、以下のようにします。
オプション
例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。
Azure Cloud Shell を使用するには、以下のようにします。
Cloud Shell を開始します。
コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。
Windows と Linux では Ctrl +Shift +V キーを選択し、macOS では Cmd +Shift +V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。
Enter キーを選択して、コードまたはコマンドを実行します。
PowerShell をローカルにインストールして使用する場合、この記事では Azure PowerShell モジュール バージョン 1.0.0 以降が必要になります。 インストールされているバージョンを確認するには、Get-Module -ListAvailable Az
を実行します。 アップグレードする必要がある場合は、Azure PowerShell モジュールのインストール に関するページを参照してください。 PowerShell をローカルで実行している場合、Connect-AzAccount
を実行して Azure との接続を作成することも必要です。
Azure サブスクリプション をお持ちでない場合は、開始する前に Azure 無料アカウント を作成してください。
この記事では、Azure CLI のバージョン 2.0.28 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。
仮想ネットワークを作成し、サービス エンドポイントを有効にする
このチュートリアルで作成するリソースを入れる仮想ネットワークを作成します。
ポータルの検索ボックスに、「仮想ネットワーク 」と入力します。 検索結果で、[仮想ネットワーク] を選択します。
[+ 作成] を選んで、新しい仮想ネットワーク を作成します。
[仮想ネットワークの作成] の [基本] タブで、次の情報を入力するか選びます。
設定
値
プロジェクトの詳細
サブスクリプション
サブスクリプションを選択します。
Resource group
[新規作成] を選択します。[名前] に「test-rg 」と入力します。 を選択します。
Name
「vnet-1 」と入力します。
リージョン
[米国西部 2] を選択します。
[次へ ] を選択します。
[次へ ] を選択します。
[IP アドレス] タブの [サブネット] で、既定 のサブネットを選びます。
[サブネットの編集] で次の情報を入力するか選びます。
設定
値
名前
「subnet-1 」と入力します。
サービス エンドポイント
サービス
プルダウン メニューで、[Microsoft.Storage] を選びます。
[保存] を選択します。
[確認および作成] を選択します。
[作成] を選択します
仮想ネットワークを作成する前に、仮想ネットワークのリソース グループと、この記事で作成された他のすべてのリソースを作成する必要があります。 New-AzResourceGroup を使用して Azure リソース グループを作成します。 次の例では、test-rg という名前のリソース グループを作成します。
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
New-AzVirtualNetwork を使用して仮想ネットワークを作成します。 次の例では、アドレス プレフィックスが 10.0.0.0/16 の vnet-1 という名前の仮想ネットワークを作成します。
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
New-AzVirtualNetworkSubnetConfig を使用してサブネット構成を作成し、Set-AzVirtualNetwork を使用してサブネット構成を仮想ネットワークに書き込みます。 次の例では、subnet-1 という名前のサブネットを仮想ネットワークに追加し、Microsoft.Storage に対するサービス エンドポイントを作成します。
$subnet = @{
Name = "subnet-1"
VirtualNetwork = $virtualNetwork
AddressPrefix = "10.0.0.0/24"
ServiceEndpoint = "Microsoft.Storage"
}
Add-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
仮想ネットワークを作成する前に、仮想ネットワークのリソース グループと、この記事で作成された他のすべてのリソースを作成する必要があります。 az group create を使用して、リソース グループを作成します。 次の例では、test-rg という名前のリソース グループを westus2 の場所に作成します。
az group create \
--name test-rg \
--location westus2
az network vnet create で、1 つのサブネットを含む仮想ネットワークを作成します。
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.0.0.0/24
この例では、Microsoft.Storage
に対するサービス エンドポイントを、サブネット subnet-1 用に作成します。
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-1 \
--address-prefix 10.0.0.0/24 \
--service-endpoints Microsoft.Storage
サブネットのネットワーク アクセスを制限する
サブネットのネットワーク アクセスを制限するネットワーク セキュリティ グループと規則を作成します。
ネットワーク セキュリティ グループの作成
ポータルの検索ボックスに、「ネットワーク セキュリティ グループ 」と入力します。 検索結果から [ネットワーク セキュリティ グループ] を選択します。
[+ 作成] を選んで、新しいネットワーク セキュリティ グループを作成します。
[ネットワーク セキュリティ グループの作成] の [基本] タブで、次の情報を入力するか選びます。
設定
値
プロジェクトの詳細
サブスクリプション
サブスクリプションを選択します。
Resource group
test-rg を選択します。
Name
「nsg-1 」と入力します。
リージョン
[米国西部 2] を選択します。
[確認および作成] を選択します。
[作成] を選択します
ネットワーク セキュリティ グループ規則を作成する
ポータルの検索ボックスに、「ネットワーク セキュリティ グループ 」と入力します。 検索結果から [ネットワーク セキュリティ グループ] を選択します。
[nsg-1] を選択します。
設定 を展開します。 [送信セキュリティ規則] を選びます。
[+ 追加] を選んで、新しい送信セキュリティ規則を追加します。
[送信セキュリティ規則の追加] で、次の情報を入力または選択します。
設定
値
source
[Service Tag](サービス タグ) を選択します。
発信元サービス タグ
[VirtualNetwork] を選択します。
ソース ポート範囲
「* 」と入力します。
宛先
[Service Tag](サービス タグ) を選択します。
宛先サービス タグ
[ストレージ] を選択します。
サービス
[カスタム] を選択します。
宛先ポート範囲
「* 」と入力します。
Protocol
[任意] をクリックします。
アクション
[許可] を選択します。
優先度
「100 」と入力します。
Name
「allow-storage-all 」と入力します。
[追加] を選択します。
[+ 追加] を選んで、別の送信セキュリティ規則を追加します。
[送信セキュリティ規則の追加] で、次の情報を入力または選択します。
設定
値
source
[Service Tag](サービス タグ) を選択します。
発信元サービス タグ
[VirtualNetwork] を選択します。
ソース ポート範囲
「* 」と入力します。
宛先
[Service Tag](サービス タグ) を選択します。
宛先サービス タグ
[インターネット] を選択します。
サービス
[カスタム] を選択します。
宛先ポート範囲
「* 」と入力します。
Protocol
[任意] をクリックします。
アクション
[拒否] を選択します。
優先順位
「110 」と入力します。
Name
「deny-internet-all 」と入力します
[追加] を選択します。
設定 を展開します。 [サブネット] を選択します。
[関連付け] を選択します。
[サブネットの関連付け] で、次の情報を入力するか選びます。
設定
値
仮想ネットワーク
vnet-1 (test-rg) を選択します。
Subnet
subnet-1 を選択します。
[OK] を選択します。
New-AzNetworkSecurityRuleConfig を使用して、ネットワーク セキュリティ グループのセキュリティ規則を作成します。 次の規則では、Azure Storage サービスに割り当てられたパブリック IP アドレスへの発信アクセスを許可します。
$r1 = @{
Name = "Allow-Storage-All"
Access = "Allow"
DestinationAddressPrefix = "Storage"
DestinationPortRange = "*"
Direction = "Outbound"
Priority = 100
Protocol = "*"
SourceAddressPrefix = "VirtualNetwork"
SourcePortRange = "*"
}
$rule1 = New-AzNetworkSecurityRuleConfig @r1
次の規則では、すべてのパブリック IP アドレスへのアクセスを拒否します。 この規則は、優先度が高い前の規則によってオーバーライドされます。これにより、Azure Storage のパブリック IP アドレスへのアクセスが許可されます。
$r2 = @{
Name = "Deny-Internet-All"
Access = "Deny"
DestinationAddressPrefix = "Internet"
DestinationPortRange = "*"
Direction = "Outbound"
Priority = 110
Protocol = "*"
SourceAddressPrefix = "VirtualNetwork"
SourcePortRange = "*"
}
$rule2 = New-AzNetworkSecurityRuleConfig @r2
New-AzNetworkSecurityGroup を使用して、ネットワーク セキュリティ グループを作成します。 次の例では、nsg-1 という名前のネットワーク セキュリティ グループを作成します。
$securityRules = @($rule1, $rule2)
$nsgParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "nsg-1"
SecurityRules = $securityRules
}
$nsg = New-AzNetworkSecurityGroup @nsgParams
Set-AzVirtualNetworkSubnetConfig を使ってネットワーク セキュリティ グループを subnet-1 サブネットに関連付けてから、サブネットの構成を仮想ネットワークに書き込みます。 次の例では、nsg-1 ネットワーク セキュリティ グループを subnet-1 サブネットに関連付けます。
$subnetConfig = @{
VirtualNetwork = $VirtualNetwork
Name = "subnet-1"
AddressPrefix = "10.0.0.0/24"
ServiceEndpoint = "Microsoft.Storage"
NetworkSecurityGroup = $nsg
}
Set-AzVirtualNetworkSubnetConfig @subnetConfig
$virtualNetwork | Set-AzVirtualNetwork
az network nsg create で、ネットワーク セキュリティ グループを作成します。 次の例では、nsg-1 という名前のネットワーク セキュリティ グループを作成します。
az network nsg create \
--resource-group test-rg \
--name nsg-1
az network vnet subnet update を使って、ネットワーク セキュリティ グループを subnet-1 サブネットに関連付けます。 次の例では、nsg-1 ネットワーク セキュリティ グループを subnet-1 サブネットに関連付けます。
az network vnet subnet update \
--vnet-name vnet-1 \
--name subnet-1 \
--resource-group test-rg \
--network-security-group nsg-1
az network nsg rule create でセキュリティ規則を作成します。 次の規則は、Azure Storage サービスに割り当てられたパブリック IP アドレスへの送信アクセスを許可します。
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-Storage-All \
--access Allow \
--protocol "*" \
--direction Outbound \
--priority 100 \
--source-address-prefix "VirtualNetwork" \
--source-port-range "*" \
--destination-address-prefix "Storage" \
--destination-port-range "*"
各ネットワーク セキュリティ グループには、さまざまな既定のセキュリティ規則 が含まれています。 次の規則は、すべてのパブリック IP アドレスへの送信アクセスを許可する既定のセキュリティ規則をオーバーライドします。 destination-address-prefix "Internet"
オプションは、すべてのパブリック IP アドレスへの送信アクセスを拒否します。 この規則は、優先度が高い前の規則によってオーバーライドされます。これにより、Azure Storage のパブリック IP アドレスへのアクセスが許可されます。
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Deny-Internet-All \
--access Deny \
--protocol "*" \
--direction Outbound \
--priority 110 \
--source-address-prefix "VirtualNetwork" \
--source-port-range "*" \
--destination-address-prefix "Internet" \
--destination-port-range "*"
Azure Storage アカウントに対するネットワーク アクセスを制限する
サービス エンドポイントを有効にした Azure サービスを介して作成されたリソースへのネットワーク アクセスを制限するために必要な手順は、サービスによって異なります。 各サービスの具体的な手順については、それぞれのサービスのドキュメントをご覧ください。 この記事の残りの部分では、例として、Azure ストレージ アカウントのネットワーク アクセスを制限する手順を示します。
ストレージ アカウントを 2 つ作成する
ポータルの検索ボックスに、「ストレージ アカウント 」と入力します。 検索結果で [ストレージ アカウント] を選択します。
[+ 作成] を選んで、新しいストレージ アカウントを作成します。
[ストレージ アカウントの作成] で、次の情報を入力するか選びます。
設定
値
プロジェクトの詳細
サブスクリプション
サブスクリプションを選択します。
Resource group
test-rg を選択します。
インスタンスの詳細
ストレージ アカウント名
「allowedaccount<ランダムな数字> 」と入力します。注: ストレージ アカウント名は一意である必要があります。名前の末尾にランダムな数字を追加します。allowedaccount
リージョン
[米国西部 2] を選択します。
パフォーマンス
[Standard] を選択します。
冗長性
[ローカル冗長ストレージ (LRS)] を選択します。
[データ保護] タブになるまで、[次へ] を選びます。
[回復] で、すべてのオプションの選択を解除します。
[確認および作成] を選択します。
[作成] を選択します
以上の手順を繰り返し、次の情報を使って別のストレージ アカウントを作成します。
設定
値
ストレージ アカウント名
「deniedaccount<ランダムな数字> 」と入力します。
New-AzStorageAccount を使って、許可される Azure ストレージ アカウントを作成します。
$storageAcctParams = @{
Location = 'westus2'
Name = 'allowedaccount'
ResourceGroupName = 'test-rg'
SkuName = 'Standard_LRS'
Kind = 'StorageV2'
}
New-AzStorageAccount @storageAcctParams
同じコマンドを使い、ただし名前を deniedaccount
に変えて、拒否される Azure ストレージ アカウントを作成します。
$storageAcctParams = @{
Location = 'westus2'
Name = 'deniedaccount'
ResourceGroupName = 'test-rg'
SkuName = 'Standard_LRS'
Kind = 'StorageV2'
}
New-AzStorageAccount @storageAcctParams
az storage account create で Azure ストレージ アカウントを 2 つ作成します。
storageAcctName1="allowedaccount"
az storage account create \
--name $storageAcctName1 \
--resource-group test-rg \
--sku Standard_LRS \
--kind StorageV2
同じコマンドを使い、ただし名前を deniedaccount
に変えて、拒否される Azure ストレージ アカウントを作成します。
storageAcctName2="deniedaccount"
az storage account create \
--name $storageAcctName2 \
--resource-group test-rg \
--sku Standard_LRS \
--kind StorageV2
ファイル共有の作成
ポータルの検索ボックスに、「ストレージ アカウント 」と入力します。 検索結果で [ストレージ アカウント] を選択します。
allowedaccount<ランダムな数字> を選びます。
[データ ストレージ] セクションを展開して、[ファイル共有] を選びます。
[+ ファイル共有] を選択します。
[新しいファイル共有] で、次の情報を入力するか選びます。
設定
値
名前
「file-share 」と入力します。
残りの設定は既定値のままにして、[確認と作成] を選びます。
[作成] を選択します
前の手順を繰り返し、deniedaccount<ランダムな数字> にファイル共有を作成します。
許可されるストレージ アカウントにファイル共有を作成する
Get-AzStorageAccountKey 使って、許可されるストレージ アカウントのストレージ アカウント キーを取得します。 次のステップでは、このキーを使って、許可されるストレージ アカウントにファイル共有を作成します。
$storageAcctName1 = "allowedaccount"
$storageAcctParams1 = @{
ResourceGroupName = "test-rg"
AccountName = $storageAcctName1
}
$storageAcctKey1 = (Get-AzStorageAccountKey @storageAcctParams1).Value[0]
New-AzStorageContext を使用して、ご自身のストレージ アカウントとキーのコンテキストを作成します。 コンテキストによってストレージ アカウント名とアカウント キーがカプセル化されます。
$storageContext1 = New-AzStorageContext $storageAcctName1 $storageAcctKey1
New-AzStorageShare を使ってファイル共有を作成します。
$share1 = New-AzStorageShare file-share -Context $storageContext1
拒否されるストレージ アカウントにファイル共有を作成する
Get-AzStorageAccountKey 使って、許可されるストレージ アカウントのストレージ アカウント キーを取得します。 次のステップでは、このキーを使って、拒否されるストレージ アカウントにファイル共有を作成します。
$storageAcctName2 = "deniedaccount"
$storageAcctParams2 = @{
ResourceGroupName = "test-rg"
AccountName = $storageAcctName2
}
$storageAcctKey2 = (Get-AzStorageAccountKey @storageAcctParams2).Value[0]
New-AzStorageContext を使用して、ご自身のストレージ アカウントとキーのコンテキストを作成します。 コンテキストによってストレージ アカウント名とアカウント キーがカプセル化されます。
$storageContext2= New-AzStorageContext $storageAcctName2 $storageAcctKey2
New-AzStorageShare を使ってファイル共有を作成します。
$share2 = New-AzStorageShare file-share -Context $storageContext2
許可されるストレージ アカウントにファイル共有を作成する
az storage account show-connection-string を使って、ストレージ アカウントの接続文字列を変数に取得します。 接続文字列は、後の手順でファイル共有を作成するときに使います。
saConnectionString1=$(az storage account show-connection-string \
--name $storageAcctName1 \
--resource-group test-rg \
--query 'connectionString' \
--out tsv)
az storage share create を使って、ストレージ アカウントにファイル共有を作成します。 後の手順では、このファイル共有をマウントして、それへのネットワーク アクセスを確認します。
az storage share create \
--name file-share \
--quota 2048 \
--connection-string $saConnectionString1 > /dev/null
拒否されるストレージ アカウントにファイル共有を作成する
az storage account show-connection-string を使って、ストレージ アカウントの接続文字列を変数に取得します。 接続文字列は、後の手順でファイル共有を作成するときに使います。
saConnectionString2=$(az storage account show-connection-string \
--name $storageAcctName2 \
--resource-group test-rg \
--query 'connectionString' \
--out tsv)
az storage share create を使って、ストレージ アカウントにファイル共有を作成します。 後の手順では、このファイル共有をマウントして、それへのネットワーク アクセスを確認します。
az storage share create \
--name file-share \
--quota 2048 \
--connection-string $saConnectionString2 > /dev/null
ストレージ アカウントへのすべてのネットワーク アクセスを拒否する
既定では、ストレージ アカウントは、任意のネットワーク上のクライアントからのネットワーク接続を受け入れます。 ストレージ アカウントへのネットワーク アクセスを制限するには、特定のネットワークからの接続のみを受け入れるように、ストレージ アカウントを構成できます。 この例では、前に作成した仮想ネットワーク サブネットからの接続のみを受け入れるように、ストレージ アカウントを構成します。
ポータルの検索ボックスに、「ストレージ アカウント 」と入力します。 検索結果で [ストレージ アカウント] を選択します。
allowedaccount<ランダムな数字> を選びます。
[セキュリティとネットワーク] を展開して、[ネットワーク] を選びます。
[ファイアウォールと仮想ネットワーク] の [パブリック ネットワーク アクセス] で、[選択した仮想ネットワークと IP アドレスから有効] をオンにします。
[仮想ネットワーク] で、[+ 既存の仮想ネットワークを追加] を選択します。
[ネットワークの追加] で、次の情報を入力するか選びます。
設定
値
サブスクリプション
サブスクリプションを選択します。
仮想ネットワーク
[vnet-1] を選択します。
サブネット
subnet-1 を選択します。
[追加] を選択します。
[保存] を選択します。
前の手順を繰り返し、deniedaccount<ランダムな数字> へのネットワーク アクセスを拒否します。
Update-AzStorageAccountNetworkRuleSet を使って、前に作成した仮想ネットワークとサブネットからのものを除き、ストレージ アカウントへのアクセスを拒否します。 ネットワーク アクセスが拒否されると、ストレージ アカウントには、どのネットワークからもアクセスできなくなります。
$storageAcctParams1 = @{
ResourceGroupName = "test-rg"
Name = $storageAcctName1
DefaultAction = "Deny"
}
Update-AzStorageAccountNetworkRuleSet @storageAcctParams1
$storageAcctParams2 = @{
ResourceGroupName = "test-rg"
Name = $storageAcctName2
DefaultAction = "Deny"
}
Update-AzStorageAccountNetworkRuleSet @storageAcctParams2
特定の仮想ネットワーク サブネットからのネットワーク アクセスのみを有効にする
Get-AzVirtualNetwork を使用して作成済み仮想ネットワークを取得し、Get-AzVirtualNetworkSubnetConfig を使用して、変数に読み込むプライベート サブネット オブジェクトを取得します。
$privateSubnetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-1"
}
$privateSubnet = Get-AzVirtualNetwork @privateSubnetParams | Get-AzVirtualNetworkSubnetConfig -Name "subnet-1"
Add-AzStorageAccountNetworkRule を使って、subnet-1 サブネットからのストレージ アカウントへのネットワーク アクセスを許可します。
$networkRuleParams1 = @{
ResourceGroupName = "test-rg"
Name = $storageAcctName1
VirtualNetworkResourceId = $privateSubnet.Id
}
Add-AzStorageAccountNetworkRule @networkRuleParams1
$networkRuleParams2 = @{
ResourceGroupName = "test-rg"
Name = $storageAcctName2
VirtualNetworkResourceId = $privateSubnet.Id
}
Add-AzStorageAccountNetworkRule @networkRuleParams2
既定では、ストレージ アカウントは、任意のネットワーク上のクライアントからのネットワーク接続を受け入れます。 選んだネットワークへのアクセスを制限するには、az storage account update で既定のアクションを Deny に変更します。 ネットワーク アクセスが拒否されると、ストレージ アカウントには、どのネットワークからもアクセスできなくなります。
az storage account update \
--name $storageAcctName1 \
--resource-group test-rg \
--default-action Deny
az storage account update \
--name $storageAcctName2 \
--resource-group test-rg \
--default-action Deny
特定の仮想ネットワーク サブネットからのネットワーク アクセスのみを有効にする
az storage account network-rule add を使って、subnet-1 サブネットからのストレージ アカウントへのネットワーク アクセスを許可します。
az storage account network-rule add \
--resource-group test-rg \
--account-name $storageAcctName1 \
--vnet-name vnet-1 \
--subnet subnet-1
az storage account network-rule add \
--resource-group test-rg \
--account-name $storageAcctName2 \
--vnet-name vnet-1 \
--subnet subnet-1
有効なストレージ アカウントへのアクセスを許可するポリシーを適用する
サービス エンドポイント ポリシーを作成できます。 このポリシーは、仮想ネットワーク内のユーザーが安全で許可された Azure ストレージ アカウントのみにアクセスできるようにします。 このポリシーには、サービス エンドポイント経由でストレージに接続されている仮想ネットワーク サブネットに適用される、許可されるストレージ アカウントの一覧が含まれます。
サービス エンドポイント ポリシーを作成する
このセクションでは、サービス エンドポイント経由でのアクセスに対して許可されるリソースの一覧を使って、ポリシー定義を作成します。
ポータルの検索ボックスに、「サービス エンドポイント ポリシー 」と入力します。 検索結果で [サービス エンドポイント ポリシー] を選びます。
[+ 作成] を選んで、新しいサービス エンドポイント ポリシーを作成します。
[サービス エンドポイント ポリシーの作成] の [基本] タブで、次の情報を入力するか選びます。
設定
値
プロジェクトの詳細
サブスクリプション
サブスクリプションを選択します。
Resource group
test-rg を選択します。
インスタンスの詳細
Name
「service-endpoint-policy 」と入力します。
場所
[米国西部 2] を選択します。
[次へ: ポリシー定義] を選びます。
[リソース] で [+ リソースの追加] を選びます。
[リソースの追加] で、次の情報を入力するか選びます。
設定
値
サービス
[Microsoft.Storage] を選びます。
範囲
[単一のアカウント] を選びます
サブスクリプション
サブスクリプションを選択します。
Resource group
test-rg を選択します。
リソース
allowedaccount<ランダムな数字> を選びます
[追加] を選択します。
[確認および作成] を選択します。
[作成] を選択します
最初の (許可される) ストレージ アカウントのリソース ID を取得するには、Get-AzStorageAccount を使います。
$storageAcctParams1 = @{
ResourceGroupName = "test-rg"
Name = $storageAcctName1
}
$resourceId = (Get-AzStorageAccount @storageAcctParams1).id
前記のリソースを許可するポリシー定義を作成するには、New-AzServiceEndpointPolicyDefinition を使います。
$policyDefinitionParams = @{
Name = "policy-definition"
Description = "Service Endpoint Policy Definition"
Service = "Microsoft.Storage"
ServiceResource = $resourceId
}
$policyDefinition = New-AzServiceEndpointPolicyDefinition @policyDefinitionParams
New-AzServiceEndpointPolicy を使い、ポリシー定義を使ってサービス エンドポイント ポリシーを作成します。
$sepolicyParams = @{
ResourceGroupName = "test-rg"
Name = "service-endpoint-policy"
Location = "westus2"
ServiceEndpointPolicyDefinition = $policyDefinition
}
$sepolicy = New-AzServiceEndpointPolicy @sepolicyParams
サービス エンドポイント ポリシーは、サービス エンドポイントに適用されます。 最初に、サービス エンドポイント ポリシーを作成します。 次に、このサブネットに対して承認される Azure Storage アカウントのポリシー定義を、このポリシーで作成します
az storage account show を使って、許可されるストレージ アカウントのリソース ID を取得します。
serviceResourceId=$(az storage account show --name allowedaccount --query id --output tsv)
サービス エンドポイント ポリシーを作成する
az network service-endpoint policy create \
--resource-group test-rg \
--name service-endpoint-policy \
--location westus2
前記の Azure ストレージ アカウントを許可するポリシー定義を作成して、サービス エンドポイント ポリシーに追加します
az network service-endpoint policy-definition create \
--resource-group test-rg \
--policy-name service-endpoint-policy \
--name policy-definition \
--service "Microsoft.Storage" \
--service-resources $serviceResourceId
サービス エンドポイント ポリシーをサブネットに関連付ける
サービス エンドポイント ポリシーを作成したら、それを Azure Storage 用のサービス エンドポイント構成を含むターゲット サブネットに関連付けます。
ポータルの検索ボックスに、「サービス エンドポイント ポリシー 」と入力します。 検索結果で [サービス エンドポイント ポリシー] を選びます。
service-endpoint-policy を選びます。
[設定] を展開して、[関連付けられているサブネット] を選びます。
[+ サブネットの関連付けの編集] を選びます。
[サブネットの関連付けの編集] で、vnet-1 と subnet-1 を選びます。
適用 を選択します。
Set-AzVirtualNetworkSubnetConfig を使って、サービス エンドポイント ポリシーをサブネットに関連付けます。
$subnetConfigParams = @{
VirtualNetwork = $VirtualNetwork
Name = "subnet-1"
AddressPrefix = "10.0.0.0/24"
NetworkSecurityGroup = $nsg
ServiceEndpoint = "Microsoft.Storage"
ServiceEndpointPolicy = $sepolicy
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
$virtualNetwork | Set-AzVirtualNetwork
az network vnet subnet update を使って、サービス エンドポイント ポリシーをサブネットに関連付けます。
az network vnet subnet update \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-1 \
--service-endpoints Microsoft.Storage \
--service-endpoint-policy service-endpoint-policy
警告
指定されたサブネットにポリシーを関連付ける前に、サブネットからアクセスするすべてのリソースがポリシーの定義に追加されていることを確認します。 ポリシーが関連付けられると、許可された リソースへのアクセスのみがサービス エンドポイントで許可されます。
サービス エンドポイント ポリシーに関連付けられているサブネットに、管理された Azure サービスが存在しないことを確認してください。
すべてのリージョンの Azure Storage リソースへのアクセスは、このサブネットのサービス エンドポイント ポリシーに従って制限されます。
Azure Storage アカウントへのアクセス制限を検証する
ストレージ アカウントへのネットワーク アクセスをテストするには、サブネットに VM をデプロイします。
仮想マシンをデプロイする
ポータルの検索ボックスに、「仮想マシン 」と入力します。 検索結果から [仮想マシン] を選択します。
[仮想マシンの作成] の [基本] タブで、次の情報を入力または選択します。
設定
値
プロジェクトの詳細
サブスクリプション
サブスクリプションを選択します。
Resource group
test-rg を選択します。
インスタンスの詳細
仮想マシン名
「vm-1 」と入力します。
リージョン
[(米国) 米国西部 2] を選択します。
可用性のオプション
[インフラストラクチャ冗長は必要ありません] を選択します。
セキュリティの種類
[Standard] を選択します。
Image
[Windows Server 2022 Datacenter - x64 Gen2] を選択します。
サイズ
サイズを選択します。
管理者アカウント
ユーザー名
ユーザー名を入力します。
Password
パスワードを入力します。
パスワードの確認
パスワードをもう一度入力します。
受信ポートの規則
[次へ: ディスク] を選んでから、[次へ: ネットワーク] を選びます。
[ネットワーク] タブで、次の情報を入力または選択します。
設定
値
ネットワーク インターフェイス
仮想ネットワーク
[vnet-1] を選択します。
Subnet
subnet-1 (10.0.0.0/24) を選択します。
パブリック IP
[なし] を選択します。
NIC ネットワーク セキュリティ グループ
[なし] を選択します。
残りの設定は既定値のままにして、[確認と作成] を選びます。
[作成] を選択します
New-AzVM を使って、subnet-1 サブネット内に仮想マシンを作成します。 次のコマンドを実行するときに、資格情報の入力を求められます。 入力した値は、VM のユーザー名とパスワードとして構成されます。
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-1"
Name = "vm-1"
}
New-AzVm @vmParams
az vm create を使って、subnet-1 サブネット内に VM を作成します。
az vm create \
--resource-group test-rg \
--name vm-1 \
--image Win2022Datacenter \
--admin-username azureuser \
--vnet-name vnet-1 \
--subnet subnet-1
次の手順に進む前に、仮想マシンのデプロイが完了するまで待ちます。
"許可されている " ストレージ アカウントへのアクセスを確認する
Azure portal にサインインします。
ポータルの検索ボックスに、「ストレージ アカウント 」と入力します。 検索結果で [ストレージ アカウント] を選択します。
allowedaccount<ランダムな数字> を選びます。
[セキュリティとネットワーク] を展開して、[アクセス キー] を選びます。
key1 の値をコピーします。 このキーを使って、前に作成した仮想マシンからストレージ アカウントにドライブをマップします。
ポータルの検索ボックスに、「仮想マシン 」と入力します。 検索結果から [仮想マシン] を選択します。
vm-1 を選択します。
[操作] を展開します。 [コマンドの実行] を選びます。
[RunPowerShellScript] を選択します。
[実行コマンド スクリプト] に次のスクリプトを貼り付けます。
## Enter the storage account key for the allowed storage account that you recorded earlier.
$storageAcctKey1 = (pasted from procedure above)
$acctKey = ConvertTo-SecureString -String $storageAcctKey1 -AsPlainText -Force
## Replace the login account with the name of the storage account you created.
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList ("Azure\allowedaccount"), $acctKey
## Replace the storage account name with the name of the storage account you created.
New-PSDrive -Name Z -PSProvider FileSystem -Root "\\allowedaccount.file.core.windows.net\file-share" -Credential $credential
[実行] を選択します。
ドライブのマップが成功した場合、[出力] ボックスの出力は次の例のようになります。
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
Z FileSystem \\allowedaccount.file.core.windows.net\fil..
"拒否される" ストレージ アカウントへのアクセスが拒否されることを確認する
ポータルの検索ボックスに、「ストレージ アカウント 」と入力します。 検索結果で [ストレージ アカウント] を選択します。
deniedaccount<ランダムな数字> を選びます。
[セキュリティとネットワーク] を展開して、[アクセス キー] を選びます。
key1 の値をコピーします。 このキーを使って、前に作成した仮想マシンからストレージ アカウントにドライブをマップします。
ポータルの検索ボックスに、「仮想マシン 」と入力します。 検索結果から [仮想マシン] を選択します。
vm-1 を選択します。
[操作] を展開します。 [コマンドの実行] を選びます。
[RunPowerShellScript] を選択します。
[実行コマンド スクリプト] に次のスクリプトを貼り付けます。
## Enter the storage account key for the denied storage account that you recorded earlier.
$storageAcctKey2 = (pasted from procedure above)
$acctKey = ConvertTo-SecureString -String $storageAcctKey2 -AsPlainText -Force
## Replace the login account with the name of the storage account you created.
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList ("Azure\deniedaccount"), $acctKey
## Replace the storage account name with the name of the storage account you created.
New-PSDrive -Name Z -PSProvider FileSystem -Root "\\deniedaccount.file.core.windows.net\file-share" -Credential $credential
[実行] を選択します。
[出力] ボックスに次のエラー メッセージが表示されます。
New-PSDrive : Access is denied
At line:1 char:1
+ New-PSDrive -Name Z -PSProvider FileSystem -Root "\\deniedaccount8675 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Z:PSDriveInfo) [New-PSDrive], Win32Exception
+ FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand
ストレージ アカウントへのアクセスを制限するサービス エンドポイント ポリシーのために、ドライブのマップは拒否されます。
作成したリソースの使用が終了したら、リソース グループとそのすべてのリソースを削除して構いません。
Azure portal で、「リソース グループ 」を検索して選択します。
[リソース グループ] ページで、test-rg リソース グループを選択します。
[test-rg] ページで、[リソース グループの削除] を選択します。
[削除を確認するために、リソース グループの名前を入力してください] に「test-rg 」と入力して、[削除] を選びます。
必要なくなったら、Remove-AzResourceGroup を使用して、リソース グループとその中のすべてのリソースを削除できます。
$params = @{
Name = "test-rg"
Force = $true
}
Remove-AzResourceGroup @params
不要になったら、az group delete を使用して、リソース グループとそのグループに含まれているすべてのリソースを削除します。
az group delete \
--name test-rg \
--yes \
--no-wait
次のステップ
このチュートリアルでは、サービス エンドポイント ポリシーを作成し、それをサブネットに関連付けました。 サービス エンドポイント ポリシーの詳細については、サービス エンドポイント ポリシーの概要 に関するページを参照してください。