Azureの基礎　その９

#Azure におけるセキュリティ、責任、信頼

出展：https://docs.microsoft.com/ja-jp/learn/modules/intro-to-security-in-azure/index

##クラウドのセキュリティは共同責任
・Azureはセキュリティに関する懸念事項の軽減に役立つが、セキュリティは引き続き共有する責任となる

###IaaSの責任
・オペレーティングシステムおよびソフトウェアに対してパッチを適用すること、これらをセキュリティで保護すること、さらにセキュリティで保護されるようにネットワークを構成することはユーザの責任
・ネットワークの物理的な部分の保護に対する責任はクラウドプロバイダーが負う

###PaaSの責任
・オペレーティングシステムおよび最も基本的なソフトウェア (データベース管理システムなど) に関するセキュリティ上の責任はクラウドプロバイダが負う
・すべてが最新のセキュリティパッチで更新される
・すべてをAzure Active Directoryに統合してアクセス制御を行うことができる
・Azure portalあるいはスクリプトによりセキュリティで保護された複雑なシステムをアップまたはダウン状態にしたり、必要に応じてそれらのシステムをスケーリングしたりすることができる

###SaaSの責任
・ほぼすべてがクラウドプロバイダの責任

###デプロイの種類に関係なくユーザが責任を負うもの
・データ
・エンドポイント
・アカウント
・アクセス管理

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/420bb454-5f4a-78fe-85de-e37a1a5a130f.png)

###セキュリティに対する階層型アプローチ
・多層防御：情報への不正なアクセスを目的とする攻撃の進行を遅らせる一連のメカニズムを採用する戦略
　　　　　　各層で保護が提供されるため1つの層が破られた場合、後続の層は既に備えができておりさらなる露出を防ぐことができる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/0b776e4d-7fb5-acc5-2116-f39a5e98c839.png)
・データ
　・データの機密性、整合性、可用性を確保する
・アプリケーション
　・コードにおける脆弱性を減らす
　・すべての開発チームが確実にアプリケーションをセキュリティで保護する
・コンピューティング
　・コンピューティングリソースを必ずセキュリティで保護すること、セキュリティ問題を最小限に抑えるべく適切な管理体制を敷くことに重点的に取り組む
・ネットワーク
　・リソース全体でのネットワーク接続を制限し必要なもののみを許可することに重点を置く
・境界
　・ネットワーク境界でリソースに対するネットワークベースの攻撃から保護する
　・攻撃を識別し、影響を排除し、これらの発生時に警告する
・IDとアクセス
　・IDがセキュリティで保護されていること、付与されたアクセス権のみが必要であること、変更がログに記録されていることを確認する
・物理的なセキュリティ
　・資産へのアクセスに対する物理的な保護措置を講じる

##Azure Security Centerからヒントを得る

###Security Center
・Azureとオンプレミスの両方においてすべてのサービスに対して脅威からの保護を提供する監視サービス

###Security Centerの機能
・構成、リソース、およびネットワークに基づいてセキュリティに関する推奨事項を提供する
・オンプレミスおよびクラウドのワークロード全体のセキュリティ設定を監視し、新しいサービスがオンラインになると必要なセキュリティを自動的に適用する
・すべてのサービスを継続的に監視し自動的なセキュリティ評価を実行して、潜在的脆弱性を悪用される前に特定する
・機械学習を使用してマルウェアが仮想マシンやサービスにインストールされる前に検出してブロックする
・許可されるアプリケーションの一覧を定義して検証対象のアプリのみが確実に実行を許可されるようにする
・受信攻撃の可能性を分析および特定し脅威および発生した可能性がある侵害後のアクティビティの調査を支援する
・ポートに対するJust-In-Timeアクセス制御を提供し必要なトラフィックのみがネットワークで許可されるようにして攻撃対象の領域を減らす

###使用できるレベル
・Free
　　・Azureサブスクリプションの一部として使用できる
　　・このレベルはAzureリソースの評価と推奨のみに制限される
・Standard
　　・このレベルは継続的な監視、脅威の検出、ポートのJust-In-Timeアクセス制御など、セキュリティ関連のサービス一式を提供する
　　・Azure Security Centerサービス一式にアクセスするにはStandardレベルサブスクリプションにアップグレードする必要がある

###使用シナリオ
・Security Centerをワークフローに統合した使用例
　・インシデント対応にSecurity Centerを使用する
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/e182c699-1586-0ff4-8b7e-d2ced8c08c97.png)
　　・検出：イベント調査の最初の兆候を確認する
　　　　　　Security Centerダッシュボードを使用して優先順位の高いセキュリティの警告が表示されたことの最初の確認を表示する
　　・評価：最初の評価を実行して疑わしいアクティビティに関する詳細情報（セキュリティの警告に関する詳しい情報など）を入手する
　　・診断：技術的な調査、IDコンテインメント、対応策、回避戦略を実施する

　・Security Centerの推奨事項を使用してセキュリティを強化する
　　・セキュリティポリシーを構成しAzure Security Centerによって提供される推奨事項を実装することで、重大なセキュリティイベントの可能性を低減する

##IDとアクセス

###認証と承認
・認証
　・リソースにアクセスしようとしている個人またはサービスのIDを確立するプロセス
　・特定の当事者に対し本物の資格情報の提示を要求する行為が含まれIDとアクセス制御の使用に必要なセキュリティプリンシパルを作成するための基礎となる
・承認
　・認証された個人またはサービスに付与されるアクセス権のレベルを確立するプロセス
　・アクセスが許可されているデータとそのデータで実行できる操作が指定される
・AzureはAzure Active Directory（Azure AD）を介して認証と承認の両方を管理するサービスを提供している

###Azure Active Directoryとは
・クラウドベースのIDサービス
・既存のオンプレミスのActive Directoryと同期するためのサポートが組み込まれている
・スタンドアロンとして使用することもできる
・すべてのアプリケーションで同じ資格証明を共有することができる
・管理者と開発者はAzure ADで構成され、一元管理されたルールとポリシーを使用して内部および外部データやアプリケーションへのアクセスを制御できる

###Azure ADが提供するサービス
・認証
　・アプリケーションやリソースにアクセスするためのIDの検証とセルフサービスのパスワードリセット、多要素認証 (MFA)、カスタムの禁止パスワード一覧、スマートロックアウトサービスなどの機能の提供が含まれる
・シングルサインオン（SSO）
　・SSOを使用するとユーザーは1つのIDと1つのパスワードを記憶するだけで複数のアプリケーションにアクセスできるようになる
　・単一のIDがユーザーに関連付けられているため、セキュリティモデルが単純化される
　・ユーザーがロールを変更したか退職したときに、アクセス変更がそのIDに関連付けられ、アカウントを変更したり無効にしたりするために必要な労力が大幅に減少する
・アプリケーション管理
　・Azure ADアプリケーションプロキシ、SSO、マイアプリポータル (別称: アクセス パネル)、SaaSアプリを使用してクラウドおよびオンプレミスのアプリを管理する
・企業間（B2B）IDサービス
　・ゲストユーザーと外部パートナーを管理しながら、自社の企業データの企業-消費者間（B2C）ID サービスを管理する
　・アプリとサービスの使用時にユーザーがサインアップおよびサインインする方法や自分のプロファイルを管理する方法をカスタマイズして制御する
・デバイス管理
　・クラウドまたはオンプレミスのデバイスが会社のデータにアクセスする方法を管理する

###シングルサインオン（SSO）
・ユーザーは1つのIDと1つのパスワードを管理する
・アプリケーション間でのアクセスはユーザーに関連付けられている単一のIDに許可され、セキュリティモデルが簡素化される
・ ユーザーがロールを変更したか、退職したとき、アクセス変更が単一のIDに関連付けられる
・アカウントにシングルサインオンを利用することで、ユーザーは自分のIDを管理しやすくなり、環境内でのセキュリティ機能が強化される

###Azure Active DirectoryでのSSO
・SSOに対してAzure ADを活用することで、複数のデータソースを1つのインテリジェントなセキュリティグラフに統合することができる
・Azure AD内のすべてのアカウントに対する脅威の分析とリアルタイムのID保護が可能になる
・対象のアカウントには、オンプレミスのADから同期されているものも含まれる
・一元化されたIDプロバイダーを使用することで、利用中のIDインフラストラクチャのセキュリティ コントロール、レポート、アラート、管理が一元化される

###多要素認証（MFA）
・完全な認証のために2つ以上の要素を必須とすること
・IDのセキュリティが強化される

###多要素認証の要素
・ユーザーが知っているもの：パスワード、あるいはセキュリティの質問に対する答え
・ユーザーが持っているもの：通知を受け取るモバイル アプリまたはトークンを生成するデバイス
・ユーザー自身：指紋や顔スキャンなどのある種の生体認証

###サービスへのIDの提供
・サービスプリンシパル
　・サービスまたはアプリケーションによって使用されるID
　・他のID同様、ロールを割り当てることができる
・Azureサービスに対するマネージドID
　・サービスのマネージドIDを作成すると組織のActive Directoryにアカウントが作成され、他のすべてのAzure ADアカウントと同様に使用できる
　・認証されているサービスが安全にその他のAzureリソースにアクセスできるようにすることも含まれる

###ロールベースのアクセス制御
・ロール
　・「読み取り専用」や「共同作成者」などのアクセス許可のセット
　・Azureのサービスインスタンスにアクセスするためにユーザーに付与される
・IDはロールに直接マップするか、グループメンバーシップを介してマップする
・セキュリティプリンシパル、アクセス許可、およびリソースを分離するとアクセスの管理が単純になり、きめ細やかな制御を行うことができるようになる
・管理者は、必要最小限のアクセス許可が付与されていることを確認できる
・ロールは、サービスインスタンスレベルで個々に付与することもできるが、Azure Resource Managerの階層で下位にも伝送される
・Privileged Identity Management
　・ロールの割り当て、セルフサービスやジャストインタイムでのロールのアクティブ化、Azure AD とAzureのリソースへのアクセス確認を監視できる
　・追加の有料サービス

##暗号化

###暗号化とは

・対称暗号化：データの暗号化と復号化で同じキーが使用される
・非対称暗号化：公開鍵と秘密鍵のペアが使用される

###保存時の暗号化
・ストレージメカニズムに関係なく、保存データの暗号化により、復号化に必要なキーとシークレットなしでは格納されているデータを読み取れなくなる
・攻撃者は暗号化されたデータが保存されているハードドライブにアクセスできても、暗号化キーにはアクセスできなかった場合、データのセキュリティを侵害することが難しくなる

###転送中の暗号化
・セキュリティで保護された転送はいくつかの異なる層で処理できる
・ネットワーク上に送信する前に、データをアプリケーション層で暗号化することで実現できる
・HTTPSはアプリケーション層の転送中の暗号化の一例
・仮想プライベートネットワーク（VPN）などセキュリティで保護されたチャネルをネットワーク層に設定して、2つのシステム間でデータを送信することもできる
・転送中のデータを暗号化することで、外部のオブザーバーからデータが保護され、露出のリスクを制限しながらデータを転送するためのメカニズムが提供される

###Azureでの暗号化

・生のストレージの暗号化
　・保存データ用のAzure Storage Service Encryptionは、組織のセキュリティとコンプライアンスコミットメントを満たすためにデータを保護するのに役立つ
　・Azure Storageプラットフォームではデータが Azure Managed Disks、Azure Blob Storage、Azure Files、または Azure Queue Storage に保存される前に自動的に暗号化され、データは取得される前に復号化される

・仮想マシンディスクの暗号化
　・Azure Disk Encryption は、WindowsとLinuxのIaaS 仮想マシンディスクを暗号化する
　・Azure Disk Encryptionでは、Windowsの業界標準であるBitLocker機能とLinuxのdm-crypt 機能を利用して、OSとデータディスクのボリュームの暗号化を提供する
　・このソリューションはAzure Key Vaultと統合されており、ディスクの暗号化キーとシークレットを制御および管理するのに役立つ
　・Key VaultへのアクセスにマネージドサービスIDを使用することができる

・データベースの暗号化
　・透過的なデータ暗号化（TDE）は、悪意のあるアクティビティの脅威からAzure SQL Database とAzure Data Warehouseを保護するのに役立つ
　・アプリケーションに変更を加えることなく、データベース、関連付けられているバックアップ、保存されているトランザクションログファイルがリアルタイムに暗号化および復号化される
　・既定では、新しくデプロイされるすべてのAzure SQLデータベースインスタンスでTDEが有効になる
　・TDEでは、データベース暗号化キーと呼ばれる対称キーを使用して、データベース全体のストレージが暗号化される
　・既定では、Azureで論理SQL Serverインスタンスごとに一意の暗号化キーが提供され、すべての詳細が処理される
　・Azure Key Vaultに格納されているキーと共に、Bring Your Own Key (BYOK) もサポートされる

・シークレットを暗号化する
　・Azureでは、Azure Key Vaultを使用してシークレットを保護する
　・Azure Key Vaultは、アプリケーションシークレットを格納するための一元的なクラウドサービス
　・Key Vaultはシークレットの管理を支援する
　・アプリケーションのシークレットが中央の1か所に保存され、アクセスがセキュリティで保護され、アクセス許可が制御され、アクセスがログに記録される

・Azure Key Vaultが役立つシナリオ
　・シークレットの管理：
　　Key Vaultを使用すると、トークン、パスワード、証明書、アプリケーションプログラミングインターフェイス（API）キー、その他のシークレットを安全に格納し、それらへのアクセスを厳密に制御できる
　・キー管理：
　　Key Vaultをキー管理ソリューションとして使用することもできる
　　Key Vault により、データの暗号化に使用される暗号化キーの作成と制御が簡単になる
　・証明書管理：
　　Key Vaultを使用すると、Azureおよび内部の接続されているリソースでパブリックおよびプライベートのSecure Sockets Layer/Transport Layer Security（SSL/TLS）証明書をより簡単にプロビジョニング、管理、展開することができる
　・ハードウェアセキュリティモジュール（HSM）によってサポートされているシークレットを格納する。シークレットとキーは、ソフトウェアまたはFIPS 140-2 レベル 2検証済みHSMで保護できる

・Key Vaultを使用するメリット
　・アプリケーションシークレットの一元化。 アプリケーションシークレットのためにストレージを一元管理することで、その配布を制御できる。また、シークレットが誤って漏洩する可能性が少なくなる
　・シークレットとキーを安全に保存。Azureには業界標準のアルゴリズム、キーの長さ、および HSMが使用されており、アクセスには適切な認証と承認が必要となる
　・アクセスおよび利用状況の監視。Key Vaultを使用すると、会社のシークレットへのアクセスを監視および制御できる
　・簡単なアプリケーションシークレットの管理。Key Vaultを使用すると、公開証明機関（CA）からの証明書の登録と更新が簡単になる。リージョン内のコンテンツをスケールアップして複製し、標準の証明書管理ツールを使用することもできる
　・他のAzureサービスとの統合。Key Vaultは、ストレージアカウント、コンテナーレジストリ、イベントハブなど、多数のAzureサービスと統合できる

##Azure証明書の概要

・TLS（トランスポート層セキュリティ）ではデータの暗号化と暗号化の解除に「証明書」が使用される
・Azureで使用される証明書はx.509 v3であり、信頼された証明機関によって署名することも、自己署名することもできる

###証明書の種類
・サービス証明書
　・サービス証明書はクラウドサービスに関連付けられており、それによってサービスとの間のセキュリティで保護された通信が可能になる
　・Azure portalまたはクラシックデプロイモデルを使用して、サービス証明書をAzureにアップロードすることができる
　・サービス証明書は、特定のクラウドサービスに関連付けられる
　・サービス証明書は、サービス定義ファイルにおいてデプロイに割り当てられる
　・サービス証明書はサービスとは別に管理でき、異なるユーザーが管理できる

・管理証明書
　・管理APIでの認証に使用される
　・管理証明書により、クラシックデプロイモデルで認証を行うことができる
　・多くのプログラムとツール（Visual StudioやAzure SDK など）で、これらの証明書を使用して、さまざまなAzureサービスの構成とデプロイが自動化されている
　・ただし、これらはクラウドサービスには実際には関連はない

###証明書でのAzure Key Vaultの使用
・証明書もAzure Key Vaultに格納できる
・Key Vaultでは、通常の証明書管理には備わっていない以下の追加機能が提供される
　・Key Vaultで証明書を作成したり、既存の証明書をインポートしたりすることができる
　・秘密キーマテリアルを使用することなく、証明書を安全に格納および管理することができる
　・証明書のライフサイクルを管理するようKey Vaultに指示するポリシーを作成できる
　・証明書の失効や更新のライフサイクルイベントを通知するための連絡先情報を指定できる
　・選択した発行者（Key Vaultパートナー X509証明書プロバイダー/証明機関）で証明書を自動的に更新できる

##ネットワークを保護する

###ネットワークセキュリティに対する階層型アプローチ
・インターネットからの保護
　・Azure Security Center
　　任意の種類の受信ネットワーク トラフィックを許可しているリソースをすべて明らかにし、それらが確実に必要なポートとプロトコルのみに制限するのに最適

・ファイアウォール
　・Azure Firewall
　　Azure Virtual Networkリソースを保護するクラウドベースのマネージドネットワークセキュリティサービス
　　組み込みの高可用性とクラウドによる無制限のスケーラビリティを備えた、完全にステートフルなサービスとしてのファイアウォール
　　非HTTP/S（リモートデスクトッププロトコル（RDP）、セキュアシェル（SSH）、ファイル転送プロトコル（FTP）など）プロトコルの受信保護機能がある
　　すべてのポートとプロトコルに対する送信ネットワークレベルの保護機能と、送信HTTP/Sに対するアプリケーションレベルの保護機能もある

　・Azure Application Gateway
　　ロードバランサーであり、Webサイトの一般的な既知の脆弱性に対する保護を提供するWebアプリケーションファイアウォール (WAF) が含まれる

　・ネットワーク仮想アプライアンス（NVA）
　　HTTP以外のサービスまたは詳細構成に最適なオプションであり、ハードウェアファイアウォール アプライアンスと同様

###分散型サービス拒否（DDoS）攻撃の阻止
・Azure DDoS Protection
　・アプリケーション設計のベストプラクティスと組み合わせることで、DDoS攻撃に対する防御策を用意することができる
　・サービスの可用性に影響が及ぶ前に、Azureネットワークエッジのトラフィックを監視することでAzureアプリケーションを保護する
　・攻撃の検出から数分以内に、Azure Monitorメトリックを使用して通知される
　・Azure DDoS Protectionで提供されるサービスレベル
　　・Basic
　　　・Azure プラットフォームの一部として自動的に有効になる
　　　・常時接続のトラフィック監視および一般的なネットワークレベル攻撃のリアルタイムの軽減策によって、Microsoftのオンラインサービスによって使用されるのと同じ防御が提供される
　　　 ・Azureのグローバルネットワークを使用すると、各リージョンにまたがる攻撃トラフィックを分散および軽減できる
　　・Standard
　　　・Azure Virtual Networkリソースに特化してチューニングされた追加の軽減機能を提供する　　
　　　・保護ポリシーは、専用のトラフィック監視および機械学習アルゴリズムによってチューニングされる
　　　・ポリシーは、Azure Load Balancer、Application Gatewayなど、仮想ネットワーク内にデプロイされたリソースに関連付けられたパブリックIPアドレスに適用される
　　　・DDoS Standard保護で軽減できる攻撃 
　　　　・帯域幅消費型攻撃
　　　　　攻撃者の目標は膨大な量の一見正当なトラフィックでネットワーク層をあふれさせること
　　　　・プロトコル攻撃
　　　　　レイヤー3とレイヤー4のプロトコルスタック内の弱点を悪用して、ターゲットをアクセス不可にする
　　　　・リソース（アプリケーション）レイヤーの攻撃。
　　　　　ホスト間のデータ転送を妨害するためにWebアプリケーションパケットをターゲットにする

###仮想ネットワーク内のトラフィックの制御
・仮想ネットワークのセキュリティ
　・Azure仮想ネットワーク内のAzureリソースが送受信するネットワークトラフィックは、ネットワークセキュリティグループを使ってフィルター処理できる
　・サービス エンドポイントへのアクセスを制限することで、サービスへのパブリックインターネットアクセスを完全に除去することができる

・ネットワーク統合
　・仮想プライベート ネットワーク（VPN）接続
　　ネットワーク間に安全な通信チャネルを確立する一般的な方法
　・使用しているネットワークとAzureの間に専用のプライベート接続を設定するには、Azure ExpressRouteを使用する
　・ExpressRouteを利用すると、接続プロバイダーが支援するプライベート接続を介して、オンプレミスのネットワークをMicrosoftクラウドに拡張できる
　・パブリックインターネットの代わりにプライベート回線でトラフィックを送信することによって、オンプレミスの通信のセキュリティが向上する

##共有ドキュメントを保護する
・Microsoft Azure Information Protection（AIP）
　・組織がドキュメントと電子メールにラベルを適用して分類し、必要に応じてそれを保護するためのクラウドベースのソリューション

##Azure Advanced Threat Protection（Azure ATP）
・クラウドベースのセキュリティソリューションであり、組織を対象とする高度な脅威、侵害された ID、および悪意のあるインサイダーによるアクションの識別、検出、調査支援をおこなう

###Azure ATPコンポーネント
・Azure ATPポータル
　・独自のポータルがあり、不審なアクティビティを監視して対応する
　・Azure ATPインスタンスを作成し、Azure ATPセンサーから受信したデータを表示する
　・ポータルを使用して、ネットワーク環境内の脅威を監視、管理、および調査する

・Azure ATPセンサー
　・ドメイン コントローラーに直接インストールされる
　・専用サーバーを必要とせずに、またポートのミラーリングを構成することなくドメインコントローラーのトラフィックを監視する