こんにちは。k.otsukaです。
Oracle Cloud(OCI)からクラウドを始めた私にとって、OCIとAzureの仕様差にかなり困惑しました。
同じパブリッククラウドとはいえ中身は違うもの!ということを覚えておくために、OCIと比べて設計/構築時に困惑したポイントを5つ紹介していきます。(たぶんAzureから入った人もOCIに困惑するはず。)
今回紹介するポイントは私がサービスに触れることができた範囲です。間違いなくこの他にたくさん仕様の違いはあるので、これが全てと思わず皆さんで開拓していきましょう!
ネットワーク設計の時に感じた困惑
OCIには、サブネットごとにパブリックかプライベートを明示的に設定する必要がありますが、Azureではそのような設定はありません。ファイアウォールでパブリック/プライベート用途を分けるような設計が必要です。
ファイアウォールも若干仕様が異なり、サブネット/NICどちらにも付与可能な「ネットワークセキュリティグループ(NSG)」のみのため、OCIのように2つのファイアウォールリソースを管理する必要がありません。
サブネット内にVMを配置する仕組みは変わりないので、サブネットにファイアウォールを付与すれば、サブネット内のVMすべてにファイアウォールルールが適用されます。
クラウド | サブネット用 | NIC用 |
---|---|---|
OCI | セキュリティ・リスト(SL) | ネットワーク・セキュリティ・グループ |
Azure | ネットワーク セキュリティグ ループ | ネットワーク セキュリティ グループ |
インターネット接続時の困惑
OCIでは必ずNATゲートウェイを作成しルート表に紐づけ、NSGもしくはSLでアウトバウンドルールを作成する必要がありますが、Azureではそれらを実施する必要がありません。つまり、"グローバルIPアドレスの付与"、”NATゲートウェイのアタッチ"、ルーティング設定"、"ファイアウォール設定"といった作業を実施することなく、VM作成後すぐにインターネットへ接続することができます。
これは「Azure既定のSNAT」という仕組みがバックボーンで提供されており、VM起動時にランダムにグローバルIPアドレスが付与されるためとなります。バックボーンで付与されるグローバルIPアドレスのため、Azure画面上から確認することはできません。
※詳しくはMS社公式サポートブログへ
逆に、インターネットへの接続を防ぐ場合にはNSGで拒否設定が必要なります。
しかし拒否した場合、マネージドサービスの諸々の通信がインターネットへの通信を必要としているのでルーティングやファイアウォール許可設定を細かく頑張らないといけません。(仕様との闘い)
※ 例:マネージドバックアップの通信、メトリック収集の通信、API通信 等
少し脱線すると
Azureにはサービスタグと呼ばれる、各マネージドサービスへの通信に使われるリソースが存在します。
おそらくOCIのサービスCIDRラベルに該当するものです。OCIの場合は、サービスゲートウェイを配置することでそれらの通信をよしなに実施してくれますが、Azureの場合それぞれのサービスに紐づけてルーティングする必要があります。
下図の320のように"全ての通信を拒否するルール"を設定してしまうと、マネージドサービスへの通信も塞いでしまう可能性があります。
拒否ルールを設定する場合は、それよりも高い優先度でサービスタグや必要なポート開放を利用したサービスに関する"許可ルール"を設定しなければなりません。マネージドサービス利用に必要なポート番号や通信経路はサービスごとに異なるため、インターネットへの通信を防ぐことを検討する場合は十分に気を付けましょう。
専用線設定の困惑
専用線リソースとゲートウェイ作成だけではなく、にハブアンドスポークのようなサブネット(ゲートウェイサブネット & 仮想ネットワークゲートウェイ)の準備が必要です。また、サブネットの名前も必ず"GatewaySubnet"でなければいけません。加えてこのサブネットにはNSGやルートテーブルを付与してはいけません。
- | OCI | Azure |
---|---|---|
専用線開通まで (回線の用意は別) | ①DRGを作成 ②FastConnectを作成 ③DRGとFastConnectを紐づける ④VCNとDRGを紐づける | ①ゲートウェイサブネット作成 ②仮想ネットワークゲートウェイ作成 ※ExpressRouteゲートウェイとも呼ぶ ③ゲートウェイサブネットと仮想ネットワークゲートウェイを紐づける ④ ③の構成とExpressRouteを紐づける |
構成後のピアリング設定は同じく必要なので、専用線接続に必要なリソースは「ゲートウェイ」と「サブネット」が必要であることを覚えておくと良いかなと思います。
ルーティング設定の困惑
OCIから入った私が一番困惑したポイント。
前述したように"ただただ使いたいだけ"であればルートテーブルもNSGも必要ありません。
さらにオンプレミスとの専用線接続においてはAzureはルーティングする必要ありません。むしろ設定することで不具合が生じる可能性があります。
↓OCIの場合のようなDRGへのルーティングが要らない
これは、オンプレミスから仮想ネットワークゲートウェイに広報された通信は、ゲートウェイが存在する仮想ネットワーク全体に伝達される仕様によるものです。開通してしまえばルーティングがなくともExpressRoute ⇔オンプレミス間の通信が可能となることを気を付けましょう。
※参考:Azureがルートを選択するしくみ
※VPNを静的ルーティングで実施する場合はきっと必要だと思います。
このような仕様からAzureのルートテーブルは、より限定的なルーティングを実施する場合にのみ使用します。OCIのように「インターネットゲートウェイ」「NATゲートウェイ」「サービスゲートウェイ」をとりあえず付けておく、のような使い方は必要無いということを覚えておくと良いかなと思います。
※そもそもAzureには「インターネットゲートウェイ」「サービスゲートウェイ」はありません。
お金に関わる困惑
OCIに慣れていると「この機能くらい無料でできるでしょ」と思いがちですが、Azureは基本的にどのリソースもお金がかかります。
(OCIが異常と思うべきなのかもしれません)
中でも課金に衝撃を受けたリソースを紹介します。作って放置しておくだけでどんどん課金されるので、リソース作成時は金額を踏まえ注意しましょう。
※下記料金は 2023年4月によるものです。サービスの仕様や金額は時期によって変更されるのでご留意ください。
※参考元:Azure料金計算ツール
リソース | できること | 金額 1$=132円 |
---|---|---|
Bastion(Basic) | 22/TCP、3389/TCPポートを開放することなくVMに接続できるサービス https://azure.microsoft.com/ja-jp/pricing/details/azure-bastion/ | 25円/hour |
プライベートエンドポイント | パブリック通信となるリソース間の通信を プライベートIPアドレスを利用して通信できるようにするサービス ※イン/アウトバウンド送信は別課金 https://azure.microsoft.com/ja-jp/pricing/details/private-link/ | 1.3円/hour |
DNS Private Resolver | DNS条件付きフォワーダー機能を利用するためのサービス ※受信エンドポイントの料金 ※送信用/ルールセットは別途課金 https://azure.microsoft.com/ja-jp/pricing/details/dns/ | 23,850円/month |
一般的に言われている困惑
最後に、一般的に周知されている(?)ような困惑したポイントを雑に紹介します。
(名称の違いは言わずもがなだと思うので省略します)
比較対象 | OCI | Azure |
---|---|---|
CPU/メモリ | フレキシブル設定可能 | 最適なものを選定 ※フレキシブル設定不可 |
ディスク | 1種類 ・NVMe SSD | 3種類 ・本番用途(SSD) ・開発用途(HHD) ・バックアップ用途(HHD) |
ファイアウォール | Allow(許可)のみ | Allow(許可)/Deny(拒否) |
リソース作成後 の名称変更 | ほぼできる ※できないものもある | ほぼできない ※リソースIDが無いので、名前をIDとしているっぽい |
ちょっとした機能 | 自動起動/停止は画面上からはできない ※cronやタスクスケジューラが必須 | 画面上で自動停止設定可能 ※ただし自動起動は出来ない |
終わりに
Azureを触ったことでOCIは安いしシンプルなんだなぁと改めて感じることができた半面、「同じパブリッククラウドだし大丈夫でしょ」という軽い気持ちで挑むと痛い目に合うことがわかりました。他クラウドを設計する際は、しっかりと公式ドキュメントを読み仕様を確認することをおすすめします。