2023年12月21日木曜日

【Azure】エンドポイント

Azureのサービスへのアクセス場所(URL)を「エンドポイント」と呼びます。

エンドポイントは以下の3種類があります。

  • パブリックエンドポイント
  • サービスエンドポイント
  • プライベートエンドポイント

パブリックエンドポイント

パブリックエンドポイントは、インターネットに公開されるURLで、権限さえあれば誰でも利用できます。インターネット上に存在するので、アクセス元IPアドレスもパブリックIPアドレスでないといけません。

ストレージアカウントには「ストレージアカウントファイアウォール」という機能があり、以下のような使い方ができます。

  • パブリックエンドポイントの利用を禁止して、サービスエンドポイントのみを許可
    (この場合でもプライベートエンドポイントの利用は可能)
  • パブリックエンドポイントの利用を、指定したパブリックIPアドレスのみ例外として許可

ただし、パブリックエンドポイントのアクセスを許可できるIPアドレスは以下の条件があります。

  • プライベートIPアドレス不可(つまりサービスエンドポイントは制限できない)
  • AzureサービスのパブリックIPアドレス不可
    (つまりAzure上の仮想マシンは制限できない

そのため、ストレージアカウントファイアウォールでは、パブリックエンドポイントの利用を制限しながら、Azure上の仮想マシンに対してアクセスを許可するには、サービスエンドポイントを使うしかありません。

後述するサービスエンドポイントは、Azure内にのみ公開されるため、Azure上の仮想ネットワーク(VNET)からのみアクセスできます。多くの場合、アクセス元はAzure仮想マシン(Azure VM)です

サービスエンドポイント

サービスエンドポイントを利用するには、VNETのサブネットに対して「どのサービスをサービスエンドポイント経由で使うか」を指定します。これにより、ルーティングテーブルが更新され、インターネットではなくAzureネットワークを経由してアクセスできるようになります。

更新されるルーティングテーブルはサブネットに割り当てられたものなので、設定はサブネット単位です。また、該当サブネットから発信されなかった場合、たとえばVPN接続された社内ネットワークなどからは利用できません。

この時、アクセス元のIPアドレスはVNET上のプライベートIPアドレスになりますが、アクセス先のIPアドレス自体はパブリックIPアドレスのままです。

プライベートエンドポイント

プライベートエンドポイントは、AzureサービスをVNETに引き込んだようなイメージで、VNETに割り当てられたプライベートアドレスを持ちます。もちろんアクセス元もプライベートIPアドレスのままです。

プライベートアドレスなので、基本的にはVNETからのみアクセスできるのですが、プライベートIPアドレスが明示的に与えられるため、VPNなどを使うことで社内からも利用できます。

まとめ

3つのエンドポイントそれぞれのアクセス経路は以下の図のように考えると分かりやすいでしょう。

サービスエンドポイント

アクセス元とアクセス先のIPアドレスをまとめました。

エンドポイントの種類 送信元 宛先
パブリックエンドポイント パブリックIP パブリックIP
サービスエンドポイント プライベートIP パブリックIP
プライベートエンドポイント プライベートIP プライベートIP

2023年3月26日日曜日

【Azure】ストレージBlobで静的Webサイトを作成する(SSL独自ドメインの場合)

前回(ヨコヤマ企画: 【Azure】ストレージBlobで静的Webサイトを作成する(非SSL独自ドメインの場合))は、ストレージBlobの機能を使って静的Webサイトを構成しました。

用意した写真は、アイドルユニット「NoelliL(ノエリル)」が、2023年3月15日に川崎クラブチッタで行なったライブの様子です。

ストレージBlobの機能だけでは、独自ドメインを使った場合はSSLに対応できません。そこで、今回は、CDN(Content Delivery Network)を使ってSSL対応する方法を紹介します。

CDNの提供者は、高速なネットワークとストレージを備えたデータセンターを世界各地に持っています。画像や動画データを、CDNサイトに一時的に保存する(キャッシュする)ことで、応答性を高めるのがCDNの大事な役割です。また、多くの場合はSSL通信に必要な証明書を割り当てる仕組みも備えています。

▲CDNの利用

今回は、それほど多くのアクセスも、世界中に分散したクライアントも想定していませんが、SSL化するためにCDNを利用します。

Azure上で提供されるCDNは複数ありますが、今回はVerizon社がAzure上で展開しているサービス(Verizon Standard)を使いました。この場合の費用は、最初の10TBまでは1GBあたり約18円です。AzureからCDNへの通信料金はかかりませんが、CDNに無料枠はないのでCDNを使わない場合と比べて、若干のコストが追加されます。

なお、ストレージアカウントからCDNにコピーするためのネットワーク帯域には課金されません。

それでは構成してみましょう。前回の続きで、2つのサイトを構成します。

 

Step 1: CDNプロファイルとエンドポイントの作成

最初に、Azureから「Front DoorとCDN プロファイル」の管理ツールを開き、新規作成します。今回は、[その他のオファリングの探索]から[Azure CDN Standard from Verizon]を選択しました。

CDNは、すでにAzureのデータセンターまたはAzureと契約したCDNベンダーのデータセンターに展開されているため、「構築」の必要はありません。作業としては新規作成と同じですが、実際には「プロファイル(構成情報)」が定義されるだけなので、管理ツールには「CDNのプロファイル」と表示されます。

CDNプロファイルを作成するとき、同時に「エンドポイント」も指定できます(あとから追加することもできます)。エンドポイントは、キャッシュするWebサイトの代わりに指定するURLです。

▲CDNプロファイルとエンドポイントの作成

ここでは[新しいCDNエンドポイントを作成する]をチェックして、エンドポイントも同時に作成しました。画面ではnoellil20230315-2となっています。これにAzur CDNのDNSサフィックスであるazureedge.netを追加して http://noellil20230315-2.azureedge.net/ ができました。同様にもう1つのサイトも構成し、最終的に以下の2つのサイトを作成しました。

エンドポイントを作成するときは、元となるデータ(ソース)の場所と種類を指定します。今回はAzureストレージBlobの静的Webサイトを使うので[ストレージの静的Webサイト]を選びました。

しばらく待つとエンドポイントが構築されます。

▲作成されたエンドポイント

この状態で、初回アクセスは大元のストレージBlobから情報を取得するようになるのですが、少々時間がかかるようです。アクセスしても、しばらくは以下のような状態が続きます。

▲エンドポイント作成直後(まだコンテンツが複製されていない)

しばらく待つとCDNにファイルが複製されます。エンドポイントにアクセスすると目的の画像が表示されるはずです。

1つのCDNプロファイルで、複数のエンドポイントを作成できます。CDNプロファイル作成後に、エンドポイントを追加してください。今回は、2つのWebサイトを作成したので、エンドポイントも2つ用意しました。

 

Step 2: カスタムドメインの追加

このままではAzure CDNのDNSドメインサフィックスが使われてしまうので、カスタムドメインを追加します。

前回は、ストレージBlobにカスタムドメインを割り当てたのですが、その設定(DNSのCNAMEレコード)は削除してください。同じ名前を、今度はCDNに割り当てます。

  • 登録するカスタムドメイン名: noellil20230315.nwtraders.net
  • Azure CDNのドメイン名:  noellil20230315.azureedge.net

Webサイトを2つ作っているので、同様にもう1つのサイトのDNS名も割り当てます。

  • 登録するカスタムドメイン名: noellil20230315-2.nwtraders.net
  • Azure CDNのドメイン名:  noellil202303152.azureedge.net

DNSへの登録が完了したら、Azure CDNの[エンドポイント]の管理画面で、カスタムドメインを追加します。


 

Step 3: SSL用証明書(マネージド証明書)の割り当て

最後に、CDNにSSL用証明書を追加します。証明書は自分で作成したものを持ち込むこともできますが、Azure CDNから作成することもできます。Azure CDNで作成した証明書は「マネージド証明書」と呼ばれ、有効期間が来た場合の更新など、管理作業をすべてAzureが代行してくれます。しかも、料金はかかりません。

「厳密な審査を経た証明書を使いたい」といった要望でもない限り、ほとんどの場合はこれで十分でしょう。

 作成したカスタムドメイン名をクリックすると、SSLの構成画面に切り替わります。ここで[カスタムドメインHTTPS]を[オン]にし、[CDNマネージド]を選択して、[保存]をクリックします。

▲マネージド証明書の作成

その後の処理はすべて自動的に進行します。完了するまでは6時間ほどかかるので、気長に待っていてください。Azureの管理ツールを終了しても問題ありません。バックグラウンドで処理は継続します。


▲マネージド証明書の作成(約6時間かかる)

処理が完了しても、実際に有効になるまではさらに時間がかかります。以下は、構成が完全に完了する前にアクセスし、証明書情報を表示した例です。

▲マネージド証明書が完全に構成される前にアクセスした場合

以上で、Azure CDNを使ったSSL化が完了し、以下のサイトができました。

写真はアイドルグループ「NoelliL(ノエリル)

2023年3月25日土曜日

【Azure】ストレージBlobで静的Webサイトを作成する(非SSL独自ドメインの場合)

自分が撮った写真を、多くの人に公開したいと思ったことはありませんか。

ブログサービスで大量の写真を扱うのは面倒ですし、そもそも写真枚数に制限のあるサービスも多いようです。

かといって、自分でWebサイトを作るのはもっと大変ですし、安くても月額数百円から数千円の費用がかかります。

そこで、Microsoft AzureのストレージBlob(AWSのS3的なもの)で、静的Webサイトを作成し、カスタムドメインを設定してSSL化します。

必要な費用はストレージアカウントのコストとストレージからインターネットへ出ていく費用のみです。厳密な価格予測は難しいのですが、ざっと以下のとおりです。

  • ストレージ費用…1GBあたり1ヶ月約2.7円(ブログ執筆時点での東日本)
  • ネットワーク費用…最初の100GB無料

その他にストレージアクセスの回数による加算などもありますが、どうせアクセス数も少ないでしょうから無視します。ネットワーク費用も、100GBを超えると1GBあたり十数円が加算されますが、無視します。以前は5GBしか無料枠がなかったのですが、現在は100GBに増えています。

今回作成したWebサイトは2つありますが、あわせても1GB未満です。つまり、1ヶ月3円くらいのコストでWebサイトが作成できます。

それでは設定していきましょう。なお、Azureの契約や基本的な操作手順などは省略します。詳しく知りたい方は拙著「ひと目でわかるAzure」の第1章を参照してください。必要なストレージ操作などもこの章に書いてあります。


ひと目でわかるAzure基本から学ぶサーバー&ネットワーク構築第4版


Step 0: 準備

Webサイトを作ります。用意したのは、アイドルユニット「NoelliL(ノエリル)」が、2023年3月15日に川崎クラブチッタで行なったライブの写真です。

Webサイトの作成には、Adobe LightroomのWeb作成機能を使いました。数クリックでWebアルバムができます。本題ではないので詳しくは説明しませんが、こんな感じのファイルができました。階層構造があります。

▲Webアルバムのファイル

Step 1: 汎用ストレージアカウントの作成

Azureで汎用ストレージアカウントを作成します。速度はそれほど要求されないのでStandard (HDDタイプ)で十分です。

パラメーターはすべて既定値で問題ありませんが、ここではローカル冗長を指定しました。ローカル冗長はAzureのデータンセンター内で3重化します。Webアルバムに使用したファイルは別途バックアップがあるので、ローカル冗長で十分です。

「階層構造があるのに大丈夫?」と思った方、Azureに詳しいですね。既定値で作成したBlobは階層構造を持ちません。ストレージアカウントの下にコンテナがあって、それで終わりなので、1階層です。ですが、ファイル名にスラッシュ(/)があると、階層のように見せることができます。Blobを扱うツールの多くは、ローカルファイルの階層構造をスラッシュを含むファイル名に自動変換する機能を持っています。あとで実際にやってみましょう。

ストレージアカウントができたら、静的Webサイトを有効にします。この時、インデックスドキュメントとして、Adobe Lightroomが作成したファイル名index.htmlを指定します。


▲Blobの静的Webサイトを有効化

[保存]をクリックすると、静的Webサイトが完成です。

▲Blobの静的Webサイトが完成

この時、ストレージアカウントに$webというコンテナが作成されます。ここにWebサイトを構成するファイルを置きます。


Step 2: コンテンツファイルのコピー

ストレージアカウントに作成された$webにファイルをコピーします。今回は手軽に使えるazcopyコマンドを使いました。マイクロソフトのWebサイトからダウンロードしてください。

azcopyはAzure ADを使ったロールベースアクセス制御(RBAC)に対応しているので、Blob内の$webコンテナ対してRBACアクセス許可を与えます。それには最初に認証方法を「Azure ADのユーザーアカウント」に切り換えます。この切り替えには少し時間がかかるため、一時的にエラーが表示されます。気にせず、数分から十数分待ってください。




「Azure ADのユーザーアカウント」変更後のエラーは時間が解決する

そのあとで、RBACの役割を割り当てます。ここでは「ストレージBLOB共同作成者」を選択し、変更の権利を追加しました。

▲「ストレージBLOBデータ共同作成者」役割を追加


準備ができたら、以下のコマンドを実行してAzure ADにサインインします。

azcopy login --tenant-id テナントID

多要素認証を構成している場合はAzure ADのテナントIDを指定する必要があります(詳しい手順は省略します)。

サインインしたら、以下のコマンドでファイルをコピーします(1行です)。階層ごとコピーするオプションが –-recursive です。前述の通り、コピー先(Azure Blob)は実際には階層ではありませんが、階層のように見えます。

azcopy copy  --recursive * 'https://mls202112152.blob.core.windows.net/$web'

以上で、静的Webサイトが構成されました。静的Webサイトの構成画面に表示された「プライマリエンドポイント」のURLにアクセスしてください。

既定の構成ではhttps(SSL)アクセスのみ有効です。http(非SSL)アクセスを許可するには、ストレージアカウントの[構成]で、[安全な転送が必須]を無効にして、[保存]をクリックします。


▲非暗号化通信を許可してhttps(非SSL)アクセスを許可


これにより、httpsだけでなくhttpでもアクセスができるようになりました。

この時点で、DNSドメインサフィックスはweb.core.windows.netです。これではちょっと寂しいです。やはり独自ドメインを設定したいところです。


Step 3: ドメイン(SSL化しない場合)

独自ドメインの構成を「カスタムドメイン」と呼びます。SSLを使わない場合、DNSドメインの管理さえできれば簡単に追加できます。

まず、アクセスしたいDNSドメイン名に対して、静的Webサイトのプライマリエンドポイントのホスト名をCNAMEとして割り当てます。ここでは以下のように割り当てました。

  • 新規に作成するDNS名: noellil20230315-2.nwtraders.net
  • Azure静的Webサイト:  noellil202303152.z11.web.core.windows.net

次に、ストレージアカウントの[ネットワーク]から[カスタムドメイン]タブを選び、設定したいドメイン名を指定して、[保存]をクリックします。ここで、新規に作成するDNS名「noellil20230315.nwtraders.net」を指定しました。

▲カスタムドメインの追加(事前にDNSを構成しておくこと)

以上の操作で以下に対するアクセスができるようになりました。

ただし、カスタムドメインに対する適切な証明書がないため、httpsを使うと警告が表示されます。SSLの目的は、暗号化通信とサーバー確認です。これでは暗号化はできるものの、身元確認ができません。ストレージBlobを使った構成の限界です。

▲適切な証明書がない場合のhttpsアクセス(アドレスバー部分)

 

次回予告:カスタムドメインのSSL化

以上で、Webサイトとして公開できるようになりました。しかし、どうせならSSL化してhttpsでアクセスしたいものです。最近は、素生のわからないWebサイトはhttps接続が必須という会社もあるようです。

そこで次回は、ここで作成した静的WebサイトをSSL化する方法を紹介します。
ヨコヤマ企画: 【Azure】ストレージBlobで静的Webサイトを作成する(SSL独自ドメインの場合)

2023年2月26日日曜日

【Azure】仮想ネットワーク作成の新UI(詳細版)

ひと目でわかるAzure 基本から学ぶサーバー&ネットワーク構築 第4版』が2023年1月に出版されました。

クラウドサービスではよくあることですが、本書の執筆後に、仮想ネットワークの作成画面が大きく変わりました。この変更は大がかりなせいか、一斉には切り替わっておらず、現時点でも混在しています。

新しい画面では、オプション設定であるセキュリティ機能を先に指定するなど、他のリソースの作成画面と整合性が取れていないため、このままなくなる可能性もあります。また、さらに別の画面になる可能性もあるのでご注意ください。

基本的な手順は、ヨコヤマ企画: 【Azure】仮想ネットワークの作成(最近増えてきた操作画面) (g20k.jp)で紹介していますが、ここではもう少し丁寧に、書籍での記述に揃えて記述します。「ひと目でわかるAzure 基本から学ぶサーバー&ネットワーク構築 第4版」89ページから79ページとあわせてご覧ください。

  1. Azureポータルで[+リソースの作成]をクリックする。
  2. [ネットワーキング]-[Virtual network]を選択する。
    • [仮想ネットワーク]と日本語で表示されることもある。
  3. [基本]タブで、以下の項目を指定して[次:セキュリティ]をクリックする。
    • [サブスクリプション]…使用するサブスクリプションを選択する。
    • [リソースグループ]…新規作成または既存のものを使用する。
    • [名前]…仮想ネットワーク名として、自分が区別しやすい名前を指定する。
    • [地域]…リージョン(データセンターの場所)を選択する。
  4. [セキュリティ]タブで、以下のセキュリティオプションを指定して[次:IPアドレス]をクリックする。
    • [Azure Bastion]…仮想マシンに接続するための有償サービス。あとから追加することもできるので、ここでは[無効化]を選択する。詳しくは後述する(この章の11)。
    • [Azure Firewall]…Azureファイアウォール(有償)を利用する場合は有功にする。あとから構成することもできる。Azureファイアウォールを構成しなくても、NSGによる基本的なフィルター機能や、DDoS Protection BasicによるDDoS保護機能は無償で提供される。
    • [DDoS Protection Standard]…Azureで分散型拒否攻撃(DDoS)保護機能(有償)を使う場合は[有効化]を選択する。[無効化]を選択した場合は「DDoS Protection Basic」のみが利用される(無償)。DDoS Protection Basicは無効にできない。本書では、DDoS Protection Standardについては扱わない。
  5. [IPアドレス]タブで、TCP/IPアドレス情報を指定する。既定では10.0.0.0/24のアドレス空間が指定される。変更するには、アドレス空間の画面から[…]をクリックし、[アドレス空間の削除]を選択する。
  6. [IPアドレス空間の追加]をクリックする。
  7. [IPアドレス空間の追加]ブレードで、以下のとおりパラメーターを指定して、[追加]をクリックする。
    • [アドレス空間の種類]…IPv4またはIPv6を選択する。

    • [開始アドレス]…IPアドレスのネットワーク番号を入力する。

    • [Address space size]…アドレス空間のサイズを選択する。必ずサブネットに分割して使うため、大きめの範囲を指定する方がよい。後述の手順で作成後の変更も可能。

  8. IPアドレス空間ができたことを確認し、[+サブネットの追加]をクリックする。
  9. [サブネットの追加]ブレードで、以下のとおりパラメーターを指定して、[追加]をクリックする。
    • [IPアドレス空間]…作成済みのIPアドレス空間を選択する。

    • [サブネットテンプレート]…Defaultを選択する。その他の選択肢は、サービス固有のサブネットを必要とする場合に指定する。たとえば後述するAzure Bastionには専用のサブネットが必要になる。

    • [名前]…サブネット名を入力する。

    • [開始アドレス]…サブネットの開始アドレスを入力する。

    • [IPアドレスサイズ]…サブネット長を選択する。

    • [NATゲートウェイ]…作成済みのNATゲートウェイを指定できる。本書では扱わない。

    • [ネットワークセキュリティグループ]…作成済みのネットワークセキュリティグループ(NSG)をサブネットに割り当てることができる。

    • [ルートテーブル]…作成済みのルーティングテーブルを指定できる。本書では扱わない。

  10. IPアドレス空間とサブネットを確認し、[次:タグ]をクリックする。

  11. [タグ]タブで、タグを指定して[次:確認および作成]をクリックする。
  12. [確認および作成]タブで、内容を確認して[作成]をクリックする。

2023年1月16日月曜日

【Azure】仮想ネットワークの作成(最近増えてきた操作画面)

Microsoft Azureの仮想ネットワーク作成画面が、一部のユーザーで変更されています。新しい手順は、他のAzureリソースの作成手順と一貫性がなく、これが全員に広がるかどうかは分かりません。

具体的な手順は以下のとおりです。リソースグループ名やリソース名を含め、構成パラメーターは「Microsoft AzureによるITインフラの拡張」に従いました。テキストとあわせてご覧ください。

  1. Azureポータルの検索ボックスでvnetとキーボードから入力し、[仮想ネットワーク]を選択
  2. 仮想ネットワークの管理画面に切り替わるので[+作成]をクリック
  3. 以下の情報を指定
    • サブスクリプション: (既定値)
    • リソースグループ: azurelabnn (nnは受講者番号)
    • 名前: vnetnn (nnは受講者番号)
    • リージョン(地域): Japan East (東日本)
    • [次:セキュリティ>]をクリック
  4. [次:セキュリティ>]で何も指定せずに[次:IPアドレス>]をクリック
  5. []をクリックして[アドレス空間の削除]を選択し、既定のアドレス空間を削除
  6. [IPアドレス空間の追加]をクリック
  7. 以下の情報を指定
    • アドレス空間の種類:  IPv4
    • 開始アドレス: 172.16.0.0  (キーボードから入力)
    • Address space size: /16  (ドロップダウンリストから選択)
    • [追加]をクリック
  8. [サブネットの追加]をクリック
    • IPアドレス空間:  172.16.0.0/16  (確認のみ)
    • サブネットテンプレート:  Default
    • 名前: subnet-1 (キーボードから入力)
    • 開始アドレス: 172.16.1.0  (キーボードから入力)
    • IPアドレスサイズ: /24  (ドロップダウンリストから選択)
    • その他の項目は既定値のまま[追加]をクリック
  9. IPアドレス空間とサブネットを確認して[確認+作成]をクリック
  10. 検証に成功したことを確認して[作成]をクリック