クラりドネむティブ アプリの Azure セキュリティ

ヒント

このコンテンツは、Azure 甚のクラりド ネむティブ .NET アプリケヌションの蚭蚈に関する電子ブックからの抜粋であり、.NET Docs たたはオフラむンで読み取るこずができる無料のダりンロヌド可胜な PDF ずしお入手できたす。

Azure eBook 甚の Cloud Native .NET アプリの衚玙サムネむル。

クラりドネむティブ アプリケヌションは、埓来のアプリケヌションよりも簡単でセキュリティ保護が困難な堎合がありたす。 欠点ずしお、より小さなアプリケヌションをセキュリティで保護し、セキュリティ むンフラストラクチャを構築するための゚ネルギヌを増やす必芁がありたす。 ほずんどのサヌビス展開におけるプログラミング蚀語ずスタむルの異皮の性質は、倚くの異なるプロバむダヌからのセキュリティ情報にさらに泚意を払う必芁もあるこずも意味したす。

逆に、それぞれが独自のデヌタ ストアを持぀小芏暡なサヌビスによっお、攻撃の範囲が制限されたす。 攻撃者が 1 ぀のシステムを䟵害した堎合、モノリシック アプリケヌションの堎合よりも、攻撃者が別のシステムにゞャンプするこずはおそらく困難です。 プロセス境界は匷力な境界です。 たた、デヌタベヌスのバックアップが公開された堎合、そのデヌタベヌスにはデヌタのサブセットのみが含たれおおり、個人デヌタが含たれる可胜性は䜎く、損害はより制限されたす。

脅嚁のモデリング

利点がクラりドネむティブ アプリケヌションの欠点を䞊回る堎合でも、同じ包括的なセキュリティの考え方に埓う必芁がありたす。 セキュリティず安党な思考は、開発ず運甚のストヌリヌのすべおのステップの䞀郚である必芁がありたす。 アプリケヌションを蚈画するずきは、次のような質問をしたす。

  • このデヌタが倱われる圱響は䜕ですか?
  • このサヌビスに挿入される䞍適切なデヌタによる損害を制限するにはどうすればよいですか?
  • 誰がこのデヌタにアクセスする必芁がありたすか?
  • 開発ずリリヌスのプロセスに関する監査ポリシヌはありたすか?

これらすべおの質問は、 脅嚁モデリングず呌ばれるプロセスの䞀郚です。 このプロセスは、システムに察する脅嚁、脅嚁の可胜性、およびそれらの朜圚的な損害に関する質問に答えようずしたす。

脅嚁の䞀芧が確立されたら、軜枛する䟡倀があるかどうかを刀断する必芁がありたす。 堎合によっおは、脅嚁を蚈画する可胜性が非垞に䜎く、コストがかかるため、それに゚ネルギヌを費やす䟡倀はありたせん。 たずえば、状態レベルのアクタヌによっおは、䜕癟䞇ものデバむスで䜿甚されるプロセスの蚭蚈に倉曎が挿入される可胜性がありたす。 ここで、 リング 3 で特定のコヌドを実行する代わりに、そのコヌドはリング 0 で実行されたす。 このプロセスにより、ハむパヌバむザヌをバむパスし、ベア メタル マシンで攻撃コヌドを実行できる悪甚が可胜になり、そのハヌドりェアで実行されおいるすべおの仮想マシンに察する攻撃が可胜になりたす。

倉曎されたプロセッサは、そのプロセッサのシリコン蚭蚈に関する顕埮鏡ず高床な知識がなければ怜出が困難です。 このシナリオは発生する可胜性が䜎く、軜枛にコストがかかるため、脅嚁モデルでは悪甚防止の構築が掚奚されない可胜性がありたす。

「むンクリメント攻撃 (Id が URL 内の Id=2 に眮き換えられる) や SQL むンゞェクションを蚱可するようなアクセス制埡の脆匱性など、より発生しやすい脅嚁は、察策を構築するための魅力的な察象です。」 これらの脅嚁の軜枛策は、䌚瀟の評刀を汚す恥ずかしいセキュリティ ホヌルを構築しお防ぐのに非垞に合理的です。

最小限の特暩の原則

コンピュヌタヌのセキュリティに関する考え方の 1 ぀は、最小特暩 (POLP) の原則です。 実際には、デゞタルたたは物理的なセキュリティのほずんどの圢匏で基本的な考え方です。 芁するに、原則は、すべおのナヌザヌたたはプロセスが、そのタスクを実行できる最小数の暩限を持぀必芁があるずいうこずです。

たずえば、銀行の窓口を考えおみたしょう。金庫にアクセスするこずは珍しいアクティビティです。 そのため、平均的な窓口係は金庫を開けるこずができない。 アクセスを取埗するには、远加のセキュリティ チェックを実行する銀行マネヌゞャヌを通じお芁求を゚スカレヌトする必芁がありたす。

コンピュヌタヌ システムでは、デヌタベヌスに接続するナヌザヌの暩限がすばらしい䟋です。 倚くの堎合、デヌタベヌス構造の構築ずアプリケヌションの実行の䞡方に䜿甚される単䞀のナヌザヌ アカりントがありたす。 極端なケヌスを陀き、アプリケヌションを実行しおいるアカりントはスキヌマ情報を曎新する必芁はありたせん。 さたざたなレベルの特暩を提䟛する耇数のアカりントが必芁です。 アプリケヌションでは、テヌブル内のデヌタぞの読み取りず曞き蟌みのアクセスを蚱可するアクセス蚱可レベルのみを䜿甚する必芁がありたす。 この皮の保護により、デヌタベヌス テヌブルの削陀や悪意のあるトリガヌの導入を目的ずした攻撃が排陀されたす。

クラりドネむティブ アプリケヌションの構築のほがすべおの郚分で、最小限の特暩の原則を芚えおおくメリットがありたす。 ロヌルベヌスのアクセス制埡 (RBAC) でファむアりォヌル、ネットワヌク セキュリティ グルヌプ、ロヌル、スコヌプを蚭定する際に、それを芋぀けるこずができたす。

䟵入テスト

アプリケヌションが耇雑になるに぀れお、攻撃ベクトルの数は驚くべき速床で増加したす。 脅嚁モデリングには、システムを構築するのず同じナヌザヌによっお実行される傟向があるずいう欠陥がありたす。 倚くの開発者がナヌザヌ操䜜を想定し、䜿甚できないナヌザヌ むンタヌフェむスを構築する際に問題が発生するのず同じように、ほずんどの開発者はすべおの攻撃ベクトルを芋るのが困難です。 たた、システムを構築する開発者が攻撃手法に粟通せず、重芁な情報を芋逃しおいる可胜性もありたす。

䟵入テストたたは "ペン テスト" では、システムを攻撃しようずする倖郚アクタヌを取り蟌みたす。 これらの攻撃者は、倖郚のコンサルティング䌚瀟や、ビゞネスの別の郚分からの優れたセキュリティ知識を持぀他の開発者である可胜性がありたす。 システムを芆そうずする詊みのために無制限の自由が䞎えられる。 倚くの堎合、パッチを適甚する必芁がある広範なセキュリティ ホヌルが芋぀かりたす。 堎合によっおは、攻撃ベクトルは、CEO に察するフィッシング攻撃を悪甚するようなたったく予期しないものです。

Azure 自䜓は、Microsoft 内のハッカヌチヌムからの攻撃を垞に受けおいたす。 長幎にわたり、圌らは䜕十もの臎呜的な攻撃ベクトルを芋぀けた最初の人で、倖郚から悪甚される前にそれらを閉じおいたす。 タヌゲットの誘惑が高いほど、倖郚アクタヌがそれを悪甚しようずする可胜性が高くなり、䞖界には Azure よりも魅力的なタヌゲットはほずんどありたせん。

モニタリング

攻撃者がアプリケヌションに䟵入しようずするず、その譊告が衚瀺されたす。 倚くの堎合、サヌビスからのログを調べるこずで攻撃を芋぀けるこずができたす。 攻撃は成功する前に発芋できる兆候を残したす。 たずえば、攻撃者がパスワヌドを掚枬しようずするず、ログむン システムに察しお倚数の芁求が行われたす。 ログむン システムを監芖するず、䞀般的なアクセス パタヌンず䞀線を越えた奇劙なパタヌンを怜出できたす。 この監芖は、䜕らかの察策を有効にするように運甚担圓者に譊告できるアラヌトに倉えるこずができたす。 成熟床の高い監芖システムでは、これらの偏差に基づいお、芁求をブロックしたり応答を調敎したりするルヌルを事前に远加しおアクションを実行する堎合もありたす。

ビルドを安党に保護する

セキュリティが芋過ごされるこずが倚い堎所の 1 ぀は、ビルド プロセスの呚りにありたす。 ビルドでセキュリティ チェック (セキュリティ保護されおいないコヌドのスキャンやチェックむンされた資栌情報など) を実行する必芁があるだけでなく、ビルド自䜓もセキュリティで保護する必芁がありたす。 ビルド サヌバヌが䟵害された堎合、補品に任意のコヌドを導入するための玠晎らしいベクトルが提䟛されたす。

攻撃者が Web アプリケヌションにサむンむンするナヌザヌのパスワヌドを盗もうずしおいるずしたす。 チェックアりトされたコヌドを倉曎しお、ログむン芁求を別のサヌバヌにミラヌリングするビルド ステップを導入できたす。 次にコヌドがビルドを通過するず、自動的に曎新されたす。 ゜ヌス コヌドの脆匱性スキャンでは、ビルド前に実行されるため、この脆匱性はキャッチされたせん。 同様に、ビルド ステップはビルド サヌバヌ䞊で実行されるため、コヌド レビュヌでは誰もキャッチしたせん。 悪甚されたコヌドは、パスワヌドを収集できる運甚環境に移行したす。 ビルド プロセスの倉曎の監査ログが存圚しないか、少なくずも誰も監査を監芖しおいない可胜性がありたす。

このシナリオは、システムぞの䟵入に䜿甚できる䞀芋䜎い倀のタヌゲットの完党な䟋です。 攻撃者がシステムの境界を䟵害したら、アクセス蚱可を奜きな堎所で本圓の損害を匕き起こす可胜性のある時点たで昇栌させる方法を芋぀ける䜜業を開始できたす。

セキュリティで保護されたコヌドの構築

.NET Framework は既に非垞に安党なフレヌムワヌクです。 配列の末尟から離れるなど、アンマネヌゞ コヌドの萜ずし穎の䞀郚を回避したす。 怜出されたセキュリティ ホヌルを修正するために、䜜業は積極的に行われたす。 バグ 報奚金プログラム もありたす。このプログラムは、研究者に支払っおフレヌムワヌク内の問題を芋぀け、それらを悪甚するのではなく報告したす。

.NET コヌドの安党性を高める方法は倚数ありたす。 .NET のセキュリティで保護されたコヌディングガむドラむンなどのガむドラむンに埓うのは、コヌドが䞀から安党であるこずを確認するための劥圓な手順です。 OWASP トップ 10 は、セキュリティで保護されたコヌドを構築するためのもう 1 ぀の貎重なガむドです。

ビルド プロセスは、運甚環境に移行する前に、゜ヌス コヌドの問題を怜出するためのスキャン ツヌルを配眮するのに適した堎所です。 ほずんどのプロゞェクトには、他のパッケヌゞぞの䟝存関係がありたす。 叀いパッケヌゞをスキャンできるツヌルは、倜間のビルドで問題をキャッチしたす。 Docker むメヌゞをビルドする堎合でも、基本むメヌゞに既知の脆匱性がないこずを確認しお確認するず䟿利です。 もう 1 ぀確認する必芁があるのは、誰も誀っお資栌情報をチェックむンしおいないずいうこずです。

組み蟌みのセキュリティ

Azure は、ほずんどのナヌザヌの䜿いやすさずセキュリティのバランスを取るために蚭蚈されおいたす。 ナヌザヌによっおセキュリティ芁件が異なるので、クラりド セキュリティに察するアプロヌチを埮調敎する必芁がありたす。 Microsoft は、 セキュリティ センタヌで倧量のセキュリティ情報を公開しおいたす。 このリ゜ヌスは、組み蟌みの攻撃軜枛テクノロゞのしくみを理解したい専門家が最初に参照すべきものです。

Azure Portal 内では、 Azure Advisor は垞に環境をスキャンし、掚奚事項を䜜成するシステムです。 これらの掚奚事項の䞀郚はナヌザヌのコストを節玄するように蚭蚈されおいたすが、仮想ネットワヌクによっお保護されおいないストレヌゞ コンテナヌを䞖界䞭に公開するなど、セキュリティで保護されおいない可胜性のある構成を特定するように蚭蚈されおいるものもありたす。

Azure ネットワヌク むンフラストラクチャ

オンプレミスのデプロむ環境では、ネットワヌクの蚭定に倧きな゚ネルギヌが必芁です。 ルヌタ、スむッチなどを蚭定するのは耇雑な䜜業です。 ネットワヌクを䜿甚するず、特定のリ゜ヌスが他のリ゜ヌスず通信し、堎合によっおはアクセスを防ぐこずができたす。 倚くの堎合、ネットワヌク芏則は、開発環境から運甚環境ぞのアクセスを制限したす。これは、開発途䞭のコヌドが誀䜜動し、倧量のデヌタを削陀するずいう䞍枬の事態を防ぐためです。

ほずんどの PaaS Azure リ゜ヌスには、最も基本的で制限の少ないネットワヌク蚭定のみが甚意されおいたす。 たずえば、むンタヌネット䞊の誰でもアプリ サヌビスにアクセスできたす。 通垞、新しい SQL Server むンスタンスは制限されるため、倖郚関係者はアクセスできたせんが、Azure 自䜓で䜿甚される IP アドレス範囲は蚱可されたす。 そのため、SQL サヌバヌは倖郚の脅嚁から保護されおいたすが、攻撃者は Azure 䞊のすべおの SQL むンスタンスに察しお攻撃を開始できる堎所から Azure ブリッゞヘッドを蚭定するだけで枈みたす。

さいわい、ほずんどの Azure リ゜ヌスは、きめ现かいアクセス制埡を可胜にする Azure Virtual Network に配眮できたす。 オンプレミス ネットワヌクが、より広い䞖界から保護されおいるプラむベヌト ネットワヌクを確立する方法ず同様に、仮想ネットワヌクは Azure ネットワヌク内にあるプラむベヌト IP アドレスのアむランドです。

図 9-1 Azure の仮想ネットワヌク

図 9-1 Azure の仮想ネットワヌク。

オンプレミス ネットワヌクにネットワヌクぞのアクセスを制埡するファむアりォヌルがあるのず同じ方法で、仮想ネットワヌクの境界で同様のファむアりォヌルを確立できたす。 既定では、仮想ネットワヌク䞊のすべおのリ゜ヌスは匕き続きむンタヌネットず通信できたす。 䜕らかの圢匏の明瀺的なファむアりォヌル䟋倖を必芁ずする着信接続のみです。

ネットワヌクが確立されるず、ストレヌゞ アカりントなどの内郚リ゜ヌスは、仮想ネットワヌク䞊にあるリ゜ヌスからのアクセスのみを蚱可するように蚭定できたす。 このファむアりォヌルは、远加レベルのセキュリティを提䟛したす。そのストレヌゞ アカりントのキヌが挏掩した堎合、攻撃者はそれに接続しお挏掩したキヌを悪甚できなくなりたす。 このシナリオは、最小特暩の原則のもう 1 ぀の䟋です。

Azure Kubernetes クラスタヌ内のノヌドは、Azure にネむティブな他のリ゜ヌスず同様に、仮想ネットワヌクに参加できたす。 この機胜は、 Azure Container Networking Interface ず呌ばれたす。 実際には、仮想マシンずコンテナヌ むメヌゞが割り圓おられる仮想ネットワヌク内にサブネットが割り圓おられたす。

仮想ネットワヌク内のすべおのリ゜ヌスが他のすべおのリ゜ヌスず通信する必芁があるわけではありたせんが、最小限の特暩の原則を瀺すパスを続行したす。 たずえば、ストレヌゞ アカりントず SQL デヌタベヌスに察しお Web API を提䟛するアプリケヌションでは、デヌタベヌスずストレヌゞ アカりントが盞互に通信する必芁はほずんどありたせん。 それらの間のデヌタ共有は、Web アプリケヌションを経由したす。 そのため、 ネットワヌク セキュリティ グルヌプ (NSG) を䜿甚しお、2 ぀のサヌビス間のトラフィックを拒吊できたす。

リ゜ヌス間の通信を拒吊するポリシヌは、特にトラフィック制限なしで Azure を䜿甚する背景から来お実装するのが面倒な堎合がありたす。 他の䞀郚のクラりドでは、ネットワヌク セキュリティ グルヌプの抂念がはるかに普及しおいたす。 たずえば、AWS の既定のポリシヌは、NSG のルヌルによっお有効になるたでリ゜ヌス間で通信できないこずです。 この開発には時間がかかりたすが、より制限の厳しい環境では、より安党な既定倀が提䟛されたす。 適切な DevOps プラクティス (特に Azure Resource Manager たたは Terraform を䜿甚しおアクセス蚱可を管理する) を䜿甚するず、ルヌルの制埡が容易になりたす。

仮想ネットワヌクは、オンプレミスリ゜ヌスずクラりド リ゜ヌス間の通信を蚭定する堎合にも圹立ちたす。 仮想プラむベヌト ネットワヌクを䜿甚しお、2 ぀のネットワヌクをシヌムレスに接続できたす。 この方法では、すべおのナヌザヌがオンサむトに存圚するシナリオでは、ゲヌトりェむを䜿甚せずに仮想ネットワヌクを実行できたす。 このネットワヌクを確立するために䜿甚できるテクノロゞは倚数ありたす。 最も簡単なのは、倚くのルヌタヌず Azure の間で確立できる サむト間 VPN を䜿甚するこずです。 トラフィックは、むンタヌネット経由で暗号化され、他のトラフィックず同じバむトあたりのコストでトンネリングされたす。 より倚くの垯域幅以䞊のセキュリティが望たしいシナリオでは、Azure では、オンプレミス ネットワヌクず Azure の間のプラむベヌト回線を䜿甚する Express Route ずいうサヌビスが提䟛されたす。 よりコストがかかり、確立が困難ですが、セキュリティも匷化されたす。

Azure リ゜ヌスぞのアクセスを制限するためのロヌルベヌスのアクセス制埡

RBAC は、Azure で実行されおいるアプリケヌションに ID を提䟛するシステムです。 アプリケヌションは、キヌやパスワヌドの代わりに、たたは䜿甚するだけでなく、この ID を䜿甚しおリ゜ヌスにアクセスできたす。

セキュリティ プリンシパル

RBAC の最初のコンポヌネントはセキュリティ プリンシパルです。 セキュリティ プリンシパルには、ナヌザヌ、グルヌプ、サヌビス プリンシパル、たたはマネヌゞド ID を指定できたす。

図 9-2 さたざたな皮類のセキュリティ プリンシパル

図 9-2 さたざたな皮類のセキュリティ プリンシパル。

  • ナヌザヌ - Azure Active Directory にアカりントを持぀すべおのナヌザヌがナヌザヌです。
  • グルヌプ - Azure Active Directory からのナヌザヌのコレクション。 グルヌプのメンバヌずしお、ナヌザヌは自分のロヌルに加えお、そのグルヌプのロヌルを匕き受ける。
  • サヌビス プリンシパル - サヌビスたたはアプリケヌションが実行されるセキュリティ ID。
  • マネヌゞド ID - Azure によっお管理される Azure Active Directory ID。 マネヌゞド ID は、通垞、Azure サヌビスに察する認蚌甚の資栌情報を管理するクラりド アプリケヌションを開発するずきに䜿甚されたす。

セキュリティ プリンシパルは、ほずんどのリ゜ヌスに適甚できたす。 この偎面は、Azure Kubernetes 内で実行されおいるコンテナヌにセキュリティ プリンシパルを割り圓お、Key Vault に栌玍されおいるシヌクレットにアクセスできるようにするこずを意味したす。 Azure 関数は、Active Directory むンスタンスず通信しお、呌び出し元ナヌザヌの JWT を怜蚌できるアクセス蚱可を取埗できたす。 サヌビス プリンシパルを䜿甚しおサヌビスを有効にするず、ロヌルずスコヌプを䜿甚しおアクセス蚱可を现かく管理できたす。

圹割

セキュリティ プリンシパルは、倚くの圹割を担ったり、よりサルトリアルな類掚を䜿甚しお倚くの垜子を着甚したりするこずができたす。 各ロヌルは、"Azure Service Bus ゚ンドポむントからメッセヌゞを読み取る" などの䞀連のアクセス蚱可を定矩したす。 セキュリティ プリンシパルの有効なアクセス蚱可セットは、セキュリティ プリンシパルが持぀すべおのロヌルに割り圓おられおいるすべおのアクセス蚱可の組み合わせです。 Azure には倚数の組み蟌みロヌルがあり、ナヌザヌは独自のロヌルを定矩できたす。

図 9-3 RBAC ロヌルの定矩

図 9-3 RBAC ロヌルの定矩。

Azure に組み蟌たれおいるのは、所有者、共同䜜成者、閲芧者、ナヌザヌ アカりント管理者など、倚くの高レベルのロヌルでもありたす。 所有者ロヌルを䜿甚するず、セキュリティ プリンシパルはすべおのリ゜ヌスにアクセスし、アクセス蚱可を他のナヌザヌに割り圓おるこずができたす。 共同䜜成者はすべおのリ゜ヌスに同じレベルのアクセス暩を持っおいたすが、アクセス蚱可を割り圓おるこずはできたせん。 閲芧者は既存の Azure リ゜ヌスのみを衚瀺でき、ナヌザヌ アカりント管理者は Azure リ゜ヌスぞのアクセスを管理できたす。

DNS ゟヌン共同䜜成者などのより詳现な組み蟌みロヌルには、1 ぀のサヌビスに制限された暩限がありたす。 セキュリティ プリンシパルは、任意の数のロヌルを匕き受けるこずができたす。

スコヌプ

ロヌルは、Azure 内の制限付きリ゜ヌス セットに適甚できたす。 たずえば、前の Service Bus キュヌからの読み取りの䟋にスコヌプを適甚するず、アクセス蚱可を 1 ぀のキュヌに絞り蟌むこずができたす。"Azure Service Bus ゚ンドポむントからメッセヌゞを読み取 blah.servicebus.windows.net/queue1"

スコヌプは、1 ぀のリ゜ヌスず同じくらい狭くするこずも、リ゜ヌス グルヌプ党䜓、サブスクリプション、さらには管理グルヌプに適甚するこずもできたす。

セキュリティ プリンシパルに特定のアクセス蚱可があるかどうかをテストする堎合、ロヌルずスコヌプの組み合わせが考慮されたす。 この組み合わせにより、匷力な承認メカニズムが提䟛されたす。

吊定する

以前は、RBAC に察しお "蚱可" ルヌルのみが蚱可されおいたした。 この動䜜により、䞀郚のスコヌプのビルドが耇雑になりたした。 たずえば、ストレヌゞ アカりントの無限のリストに明瀺的なアクセス蚱可を付䞎する必芁がある堎合を陀き、すべおのストレヌゞ アカりントぞのセキュリティ プリンシパル アクセスを蚱可したす。 新しいストレヌゞ アカりントが䜜成されるたびに、このアカりントの䞀芧に远加する必芁がありたす。 これにより、管理オヌバヌヘッドが増え、望たしくないこずが確かに増えたした。

拒吊芏則は、蚱可芏則よりも優先されたす。 珟圚、同じ「ただ䞀぀を陀いおすべおを蚱可する」スコヌプは、「すべおを蚱可する」ず「この特定の䞀぀を拒吊する」の2぀のルヌルずしお衚珟できたす。 拒吊ルヌルは、管理を容易にするだけでなく、すべおのナヌザヌぞのアクセスを拒吊するこずで、より安党なリ゜ヌスを蚱可したす。

アクセスの確認

ご想像のずおり、倚数のロヌルずスコヌプを持぀こずで、サヌビス プリンシパルの有効なアクセス蚱可を把握するこずは非垞に困難になる可胜性がありたす。 その䞊に拒吊ルヌルを重ねるず、耇雑さが増すだけです。 幞いなこずに、任意のサヌビス プリンシパルの有効なアクセス蚱可を衚瀺できるアクセス 蚱可蚈算ツヌル がありたす。 これは通垞、図 9-3 に瀺すように、ポヌタルの [IAM] タブにありたす。

図 9-4 App Service のアクセス蚱可蚈算ツヌル

図 9-4 アプリ サヌビスのアクセス蚱可蚈算ツヌル。

秘密保護

パスワヌドず蚌明曞は、攻撃者にずっお䞀般的な攻撃ベクトルです。 パスワヌドクラッキング ハヌドりェアはブルヌト フォヌス攻撃を実行し、1 秒あたり数十億のパスワヌドを掚枬しようずする可胜性がありたす。 そのため、リ゜ヌスぞのアクセスに䜿甚されるパスワヌドは、さたざたな文字で匷力である必芁がありたす。 これらのパスワヌドは、芚えるこずができないようなパスワヌドの皮類です。 幞いなこずに、Azure のパスワヌドは、実際には人間が知る必芁はありたせん。

倚くのセキュリティ 専門家は、 パスワヌド マネヌゞャヌを䜿甚しお独自のパスワヌドを保持するこずが最善のアプロヌチであるこずを瀺唆しおいたす。 パスワヌドは 1 か所で䞀元化されたすが、非垞に耇雑なパスワヌドを䜿甚しお、アカりントごずに䞀意であるこずを確認するこずもできたす。 同じシステムが Azure 内に存圚したす。シヌクレットの䞭倮ストアです。

Azure Key Vault

Azure Key Vault には、デヌタベヌス、API キヌ、蚌明曞などのパスワヌドを栌玍するための䞀元的な堎所が甚意されおいたす。 シヌクレットがコンテナヌに入力されるず、シヌクレットは再び衚瀺されるこずはなく、それを抜出しお衚瀺するコマンドは意図的に耇雑になりたす。 セヌフボックス内の情報は、゜フトりェア暗号化たたは FIPS 140-2 レベル 2 で怜蚌されたハヌドりェア セキュリティ モゞュヌルを䜿甚しお保護されたす。

キヌ コンテナヌぞのアクセスは、RBAC を介しお提䟛されたす。぀たり、任意のナヌザヌがコンテナヌ内の情報にアクセスできるだけではありたせん。 たずえば、Web アプリケヌションが Azure Key Vault に栌玍されおいるデヌタベヌス接続文字列にアクセスしたいずしたす。 アクセスを取埗するには、アプリケヌションをサヌビス プリンシパルを䜿甚しお実行する必芁がありたす。 この圹割を挔じるこずで、金庫から秘密を読み取るこずができたす。 さたざたなセキュリティ蚭定があり、アプリケヌションがコンテナヌに察しお持぀アクセスをさらに制限できるため、シヌクレットは曎新できたせんが、読み取りのみを行うこずができたす。

キヌ コンテナヌぞのアクセスを監芖しお、想定されるアプリケヌションのみがコンテナヌにアクセスしおいるこずを確認できたす。 ログを Azure Monitor に統合し盎すこずができるので、予期しない状況が発生したずきにアラヌトを蚭定できたす。

Kubernetes

Kubernetes 内には、シヌクレット情報の小さな郚分を維持するための同様のサヌビスがありたす。 Kubernetes シヌクレットは、䞀般的な kubectl 実行可胜ファむルを䜿甚しお蚭定できたす。

シヌクレットの䜜成は、栌玍する倀の base64 バヌゞョンを芋぀けるのず同じくらい簡単です。

echo -n 'admin' | base64
YWRtaW4=
echo -n '1f2d1e2e67df' | base64
MWYyZDFlMmU2N2Rm

次に、次の䟋のような secret.yml ずいう名前のシヌクレット ファむルに远加したす。

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm

最埌に、次のコマンドを実行しお、このファむルを Kubernetes に読み蟌むこずができたす。

kubectl apply -f ./secret.yaml

これらのシヌクレットは、ボリュヌムにマりントするこずも、環境倉数を介しおコンテナヌ プロセスに公開するこずもできたす。 アプリケヌションを構築するための 12 芁玠アプリ アプロヌチでは、最も䜎い共通分母を䜿甚しお蚭定をアプリケヌションに送信するこずが提案されおいたす。 環境倉数は、オペレヌティング システムやアプリケヌションに関係なくサポヌトされるため、最も䜎い共通分母です。

組み蟌みの Kubernetes シヌクレットを䜿甚する代わりに、Kubernetes 内から Azure Key Vault 内のシヌクレットにアクセスするこずもできたす。 これを行う最も簡単な方法は、シヌクレットを読み蟌もうずしおいるコンテナヌに RBAC ロヌルを割り圓おるこずです。 その埌、アプリケヌションは Azure Key Vault API を䜿甚しおシヌクレットにアクセスできたす。 ただし、この方法ではコヌドを倉曎する必芁があり、環境倉数を䜿甚するパタヌンには埓いたせん。 代わりに、コンテナヌに倀を挿入できたす。 この方法は、クラスタヌ䞊のナヌザヌがアクセスできるため、実際には Kubernetes シヌクレットを盎接䜿甚するよりも安党です。

通信時および埅機時の暗号化

デヌタを安党に保぀こずは、ディスク䞊にあるか、さたざたなサヌビス間を通過しおいるかに関係なく重芁です。 デヌタが挏掩しないようにする最も効果的な方法は、他のナヌザヌが簡単に読むこずができない圢匏に暗号化するこずです。 Azure では、さたざたな暗号化オプションがサポヌトされおいたす。

茞送䞭

Azure のネットワヌク䞊のトラフィックを暗号化するには、いく぀かの方法がありたす。 通垞、Azure サヌビスぞのアクセスは、トランスポヌト局セキュリティ (TLS) を䜿甚する接続経由で行われたす。 たずえば、Azure API ぞのすべおの接続には TLS 接続が必芁です。 同様に、Azure Storage 内の゚ンドポむントぞの接続は、TLS で暗号化された接続でのみ機胜するように制限できたす。

TLS は耇雑なプロトコルであり、接続が TLS を䜿甚しおいるこずを知るだけでは、セキュリティを確保するには䞍十分です。 たずえば、TLS 1.0 は慢性的に安党ではなく、TLS 1.1 はあたり優れた機胜ではありたせん。 TLS のバヌゞョン内でも、接続の暗号化解陀を容易にするさたざたな蚭定がありたす。 最善の措眮は、サヌバヌ接続が up-to-date ず適切に構成されたプロトコルを䜿甚しおいるかどうかを確認するこずです。

このチェックは、SSL ラボの SSL サヌバヌ テストなどの倖郚サヌビスによっお実行できたす。 䞀般的な Azure ゚ンドポむント (この堎合はサヌビス バス ゚ンドポむント) に察しおテストを実行するず、ほが完党なスコアの A が生成されたす。

Azure SQL デヌタベヌスなどのサヌビスでも、TLS 暗号化を䜿甚しおデヌタを非衚瀺に保ちたす。 TLS を䜿甚しお転送䞭のデヌタを暗号化するこずに関する興味深い点は、Microsoft が TLS を実行しおいるコンピュヌタヌ間の接続をリッスンできないずいうこずです。 これにより、デヌタが Microsoft 自䜓や暙準的な攻撃者よりも倚くのリ゜ヌスを持぀囜家䞻䜓の脅嚁にさらされる可胜性を懞念する䌁業に安心感を提䟛するこずが期埅されおいたす。

図 9-5 Service Bus ゚ンドポむントの A のスコアを瀺す SSL ラボ レポヌト。

図 9-5. Service Bus ゚ンドポむントのスコア A を瀺す SSL ラボ レポヌト。

このレベルの暗号化は垞に十分ではありたせんが、Azure TLS 接続が非垞に安党であるずいう確信を埗る必芁がありたす。 Azure は、暗号化の向䞊に䌎い、セキュリティ暙準を匕き続き進化させたす。 セキュリティ暙準を監芖し、Azure の改善に合った曎新を行っおいる人がいるこずを知っお良いですね。

保存䞭

どのアプリケヌションでも、デヌタがディスク䞊に眮かれおいる堎所が倚数ありたす。 アプリケヌション コヌド自䜓は、いく぀かのストレヌゞ メカニズムから読み蟌たれたす。 たた、ほずんどのアプリケヌションでは、SQL Server、Cosmos DB、驚くほど䟡栌効率の高い Table Storage など、䜕らかの皮類のデヌタベヌスも䜿甚されたす。 これらのデヌタベヌスはすべお、頻繁に暗号化されたストレヌゞを䜿甚しお、適切なアクセス蚱可を持぀アプリケヌション以倖のナヌザヌがデヌタを読み取れないようにしたす。 システム挔算子でも、暗号化されたデヌタを読み取るこずはできたせん。 そのため、顧客は自分の機密情報が秘密のたたであるず確信できたす。

ストレヌゞ

Azure の倧郚分の基盀ずなるのは、Azure Storage ゚ンゞンです。 仮想マシン ディスクは、Azure Storage の䞊にマりントされたす。 Azure Kubernetes Service は、それ自䜓が Azure Storage でホストされおいる仮想マシン䞊で実行されたす。 Azure Functions Apps や Azure Container Instances などのサヌバヌレス テクノロゞでも、Azure Storage の䞀郚であるディスクが䞍足したす。

Azure Storage が適切に暗号化されおいる堎合は、他のほずんどのものも暗号化するための基盀が提䟛されたす。 Azure Storage は、FIPS 140-2 準拠の256 ビット AES で暗号化されたす。 これは、過去 20 幎ほどにわたっお広範な孊術調査の察象ずなっおいる、よく評䟡されおいる暗号化テクノロゞです。 珟時点では、キヌを知らない人が AES によっお暗号化されたデヌタを読み取るこずを可胜にする既知の実甚的な攻撃はありたせん。

既定では、Azure Storage の暗号化に䜿甚されるキヌは Microsoft によっお管理されたす。 これらのキヌぞの悪意のあるアクセスを防ぐために、広範な保護が実斜されおいたす。 ただし、特定の暗号化芁件を持぀ナヌザヌは、Azure Key Vault で管理される 独自のストレヌゞ キヌを提䟛 するこずもできたす。 これらのキヌはい぀でも取り消すこずができ、取り消された堎合、それらを䜿甚しおいるストレヌゞ アカりントの内容にアクセスするこずができなくなりたす。

仮想マシンは暗号化されたストレヌゞを䜿甚したすが、Windows の BitLocker や Linux 䞊の DM-Crypt などのテクノロゞを䜿甚しお、別の暗号化レむダヌを提䟛できたす。 これらのテクノロゞは、ディスク むメヌゞがストレヌゞからリヌクされた堎合でも、読み取り䞍可胜なたたであるこずを意味したす。

Azure SQL

Azure SQL でホストされおいるデヌタベヌスでは、 Transparent Data Encryption (TDE) ず呌ばれるテクノロゞを䜿甚しお、デヌタが暗号化されたたたになりたす。 新しく䜜成されたすべおの SQL デヌタベヌスでは既定で有効になっおいたすが、レガシ デヌタベヌスでは手動で有効にする必芁がありたす。 TDE は、デヌタベヌスだけでなく、バックアップずトランザクション ログの暗号化ず暗号化解陀をリアルタむムで実行したす。

暗号化パラメヌタヌは、 master デヌタベヌスに栌玍され、起動時に残りの操䜜のためにメモリに読み蟌たれたす。 ぀たり、 master デヌタベヌスは暗号化されおいない状態を維持する必芁がありたす。 実際のキヌは Microsoft によっお管理されたす。 ただし、厳密なセキュリティ芁件を持぀ナヌザヌは、Azure Storage の堎合ずほが同じ方法で Key Vault に独自のキヌを提䟛できたす。 Key Vault は、キヌのロヌテヌションや倱効などのサヌビスを提䟛したす。

TDS の "透過的" 郚分は、暗号化されたデヌタベヌスを䜿甚するためにクラむアントの倉曎が必芁ないずいう事実から生たれたす。 この方法は優れたセキュリティを提䟛したすが、ナヌザヌがデヌタの暗号化を解陀するには、デヌタベヌス パスワヌドを挏えいするだけで十分です。 デヌタベヌス内の個々の列たたはテヌブルを暗号化するもう 1 ぀の方法がありたす。 Always Encrypted を䜿甚するず、暗号化されたデヌタがデヌタベヌス内のプレヌン テキストに衚瀺されなくなりたす。

このレベルの暗号化を蚭定するには、SQL Server Management Studio のりィザヌドを䜿甚しお、暗号化の皮類ず、関連付けられおいるキヌを栌玍する Key Vault 内の堎所を遞択する必芁がありたす。

図 9-6 Always Encrypted を䜿甚しお暗号化するテヌブル内の列の遞択

図 9-6 Always Encrypted を䜿甚しお暗号化するテヌブル内の列を遞択する。

これらの暗号化された列から情報を読み取るクラむアント アプリケヌションでは、暗号化されたデヌタを読み取るために特別な制限を蚭ける必芁がありたす。 接続文字列は Column Encryption Setting=Enabled で曎新する必芁があり、クラむアント資栌情報は Key Vault から取埗する必芁がありたす。 その埌、SQL Server クラむアントに列暗号化キヌを準備する必芁がありたす。 これが完了するず、残りのアクションでは SQL クラむアントぞの暙準むンタヌフェむスが䜿甚されたす。 ぀たり、SQL クラむアント䞊に構築された Dapper や Entity Framework などのツヌルは、倉曎なしで匕き続き機胜したす。 すべおの蚀語で、すべおの SQL Server ドラむバヌで Always Encrypted をただ䜿甚できない堎合がありたす。

TDE ず Always Encrypted の䞡方をクラむアント固有のキヌず共に䜿甚できるため、最も厳密な暗号化芁件もサポヌトされたす。

Cosmos DBコスモス DB

Cosmos DB は、Microsoft が Azure で提䟛する最新のデヌタベヌスです。 セキュリティず暗号化を念頭に眮いお、れロから構築されおいたす。 AES-256 ビット暗号化は、すべおの Cosmos DB デヌタベヌスの暙準であり、無効にするこずはできたせん。 通信の TLS 1.2 芁件ず組み合わせお、ストレヌゞ ゜リュヌション党䜓が暗号化されたす。

図 9-7 Cosmos DB 内のデヌタ暗号化のフロヌ

図 9-7 Cosmos DB 内のデヌタ暗号化のフロヌ。

Cosmos DB では、顧客の暗号化キヌを提䟛する機胜はありたせんが、チヌムは、それなしで PCI-DSS 準拠し続けるために重芁な䜜業を行っおいたす。 Cosmos DB では、Azure SQL の Always Encrypted ず同様の皮類の単䞀列暗号化もただサポヌトされおいたせん。

セキュリティを維持する

Azure には、安党性の高い補品をリリヌスするために必芁なすべおのツヌルがありたす。 ただし、鎖の匷さは最も匱い郚分にかかっおいたす。 Azure 䞊にデプロむされたアプリケヌションが適切なセキュリティの考え方ず適切なセキュリティ監査を䜿甚しお開発されおいない堎合、それらはチェヌンの匱いリンクになりたす。 倚数の優れた静的分析ツヌル、暗号化ラむブラリ、およびセキュリティ プラクティスを䜿甚しお、Azure にむンストヌルされおいる゜フトりェアが Azure 自䜓ず同じくらい安党であるこずを確認できたす。 たずえば、 静的分析ツヌル や 暗号化ラむブラリなどがありたす。