Microsoft AZ-500: データ、ストレージ、データベースのセキュリティ — 学習ガイド
こちらの一部です: Microsoft Azure Security Engineer Associate AZ-500 — 学習ガイド. 検証済みの解答で練習: Microsoft試験ハブ, または時間制限付き模擬試験に挑戦: ExamRoll.io.
概要
Azureのデータ、ストレージ、データベースのセキュリティは、信頼の最小化、データプレーンの分離、あらゆる場所での暗号化、そして監査可能なアクセスパスによる最小権限の運用を中核とします。このセクションでは、Azure Storage、Azure SQL、Azure Cosmos DBを堅牢化し、正しいIDとキー戦略を選択し、データ漏洩を防止する方法について説明します。説明する各コントロールには、その背後にある運用上の理由が記載されており、本番環境での構成を正当化し、維持するのに役立ちます。
Azure Storageアカウントとデータアクセスの保護
ストレージアカウントの認可と共有
- Azure Storage向けAzure RBAC:Storage Blob Data Reader/Contributorなどの組み込みロールを介した、Azure ADベースの認可(BlobおよびQueue)を推奨します。理由:トークンベースであり、条件付きアクセスを介して時間制限のあるアクセスが可能で、Entra IDにログが記録されます。永続的なアカウントキーを回避し、ジャストインタイムの割り当てをサポートします。
- 共有キー:アカウントのプライマリ/セカンダリキーは、データプレーンの完全な権限を付与します。コードでのキーの使用を無効にし、頻繁にローテーションします。理由:共有キーは、ユーザーの紐付けやCA(条件付きアクセス)がないベアラートークンです。侵害されると、データが完全に漏洩します。
- SASの種類:
- Service SAS:特定のリソース(blob、file、queue、table)に対して、アクセス許可、IP、プロトコル、および時間制限付きのスコープ指定されたアクセスを許可します。理由:ADトークンを使用できないアプリケーションに対して、正確な最小権限を実現します。
- Account SAS:より広範な対象(例:サービス間);使用は控えめにします。理由:漏洩した場合、影響範囲(ブラスト半径)が拡大します。
- User delegation SAS:Azure ADとBlob用のユーザー委任キーを使用して発行されます。理由:Azure AD IDとCA(条件付きアクセス)に紐付けられます。監査性と失効の点で優れています。
- 保存されたアクセスポリシー:コンテナー/共有上のSASに対して、再利用可能な制約(有効期限、アクセス許可)を定義します。ポリシーを取り消したり更新したりすると、そのポリシーに基づいて発行されたSASが無効になります。理由:クライアントに埋め込まれたトークンを再生成することなく、一元的に失効させることができます。
例:Azure ADを使用してblobのユーザー委任SASを生成する
az storage blob generate-sas \
--account-name mystorage \
--container-name data \
--name report.csv \
--permissions r \
--expiry 2026-12-31T23:59Z \
--as-user \
--auth-mode login
種類別のサービスセキュリティ
- Blob/Queue/Table:サポートされている場合(Blob、Queue)、Azure AD RBACを使用します。AllowBlobPublicAccessをfalseに設定し、HTTPSを必須にし、バージョニングと論理削除を有効にします。理由:匿名での公開パスを排除し、回復可能性を確保します。
- Azure Files:Entra ID(またはAD DS統合)でSMBにAzure AD Kerberosを使用し、最小権限の共有/ファイルアクセス許可を強制します。SMB暗号化を必須にします。理由:SMBを介したトランスポートセキュリティを備えたIDベースのアクセス。ユーザースペースに共有キーが存在しません。
- Table service:厳密なIP/時間制約付きのSASを使用し、Account SASを避けます。理由:サービスレベルの粒度がそれほど豊富ではないため、積極的にスコープを絞ります。
すべてのストレージサービスのネットワーク分離
- ストレージファイアウォールルール:Private Linkが実現不可能な場合にのみ、選択したパブリックIP範囲に制限します。理由:攻撃対象領域を削減しますが、依然としてパブリックインターネットを経由します。
- プライベートエンドポイント:Blob、Queue、Table、FilesにはPrivate Linkを推奨します。プライベートDNSゾーンをリソース固有の名前にマッピングします。パブリックネットワークアクセスを無効(Disabled)に設定します。理由:トラフィックはAzureバックボーン内に留まります。リソースIDはプライベートDNSを介して検証されます。類似サービスへのデータ漏洩を軽減します。
- サービスエンドポイントとポリシー:Private Linkが選択できない場合、サービスエンドポイントを有効にし、サービスエンドポイントポリシーを適用して、特定のストレージアカウントへのエグレスを制限します。理由:仮想ネットワークのエグレス経由であってもトラフィックを制約し、攻撃者が所有するアカウントにデータが送信されるリスクを限定します。
標準化すべき運用設定
- HTTPSのみを強制し、最小TLS 1.2を使用します。
- ADを使用している場合、BlobとQueueの共有キーアクセスを無効にします(機能のサポート状況による)。
- 重要なコンテナー/共有に対して、規制上の保持要件とランサムウェアへの耐性のために不変性ポリシーを適用します。
暗号化とキー管理
保存時の暗号化レイヤー
- サービスマネージドキー(SMK):Azureによって管理されるデフォルトのサーバーサイド暗号化。理由:運用オーバーヘッドがなく、多くのワークロードに適しています。
- カスタマーマネージドキー(CMK):Storage、SQL、Cosmos DB用のKey VaultまたはManaged HSM内のキー。理由:信頼境界の外部化、顧客によるローテーション/失効の制御、およびコンプライアンスの証拠となります。
- インフラストラクチャ暗号化(二重暗号化):別のキーを使用する追加のレイヤー。理由:ストレージメディアの暗号化がバイパスされたり、暗号化境界が侵害されたりした場合の多層防御となります。
キーのローテーションと運用
- SMKは自動的にローテーションされます。アクションは不要です。
- CMKは、新しいキーバージョンを作成し、wrap/unwrap権限を付与し、リソースを最新バージョン(またはサポートされている場合はバージョンレスのキー参照)に再指定することでローテーションします。理由:監査可能な変更を伴う、中断のないローテーションが可能です。
- Key Vaultの論理削除と消去保護でキーを保護します。管理はRBACを介して、データプレーンはアクセスポリシーまたはRBAC(Managed HSMの場合はRBACを使用)を介して制御します。理由:破壊的なキーの損失を防ぎ、最小権限を強制します。
例:ストレージアカウントにCMKを設定する
az storage account update \
--name mystorage \
--resource-group rg-secure \
--encryption-key-source Microsoft.Keyvault \
--encryption-key-vault /subscriptions/<subId>/resourceGroups/rg-secure/providers/Microsoft.KeyVault/vaults/mykv \
--encryption-key-name stor-cmk
暗号化スコープ
- 異なるデータセットが別々のキーを必要とする場合、Storageでコンテナーごとの暗号化スコープを使用します。理由:影響範囲(ブラスト半径)をセグメント化し、異なるキーライフサイクルを可能にします。
データベースプラットフォームのセキュリティ: Azure SQL と Azure Cosmos DB
Azure SQL の認証とアクセス
- Microsoft Entra 認証: サーバーレベルの Azure AD 管理者を作成し、包含データベースユーザー (CREATE USER FROM EXTERNAL PROVIDER) を使用します。理由: SQL ログイン/パスワードを回避し、条件付きアクセスと PIM を有効にします。
- 包含ユーザー: ID は master ではなくデータベース内に存在します。理由: ログインを再プロビジョニングすることなく、geo リストアとフェイルオーバーを簡素化します。
- ファイアウォールルール: 広範なクライアント IP ルールを避け、パブリックネットワークアクセスを無効にした Private Link を優先します。IP ルールが必要な場合は、正確なアドレスにスコープを限定し、レビューを自動化します。理由: 攻撃対象領域を狭め、パブリックエンドポイント経由での検出を減らします。
- プライベートエンドポイント: すべてのデータプレーン トラフィックをプライベート DNS を使用して VNet 経由でルーティングします。理由: 公開を排除し、データ漏洩防止を簡素化します。
- 認証パターン: Active Directory 統合 (ドメイン参加デバイス向け) または対話型/デバイスコードを使用してトークンを取得します。サービスワークロードはマネージドIDを使用する必要があります。理由: パスワードを排除し、トークンの有効期間/ポリシーを有効にします。
データ保護機能
- Transparent Data Encryption (TDE): デフォルトでオン。データ/ログ/バックアップを暗号化します。理由: アプリケーションの変更なしに保存メディアを保護します。外部化された制御のために、CMK と TDE を使用します。
- Always Encrypted: Key Vault にキーを保管し、機密性の高い列をクライアント側で暗号化します。理由: SQL オペレーターやエンジンが平文を閲覧するのを防ぎます。PII/PCI フィールドに使用します。
- Dynamic Data Masking (DDM): 特権のないユーザーに対してクエリ結果を難読化します。理由: 偶発的なデータ漏洩を削減しますが、セキュリティ境界ではありません。RBAC と組み合わせます。
- 監査: Log Analytics、Event Hubs、または Storage に送信します。理由: 調査やコンプライアンスのための不変の追跡記録を作成します。
例: サーバーレベルの監査を有効にして Log Analytics に送信する
az sql server audit-policy update \
--name sql-secure \
--resource-group rg-secure \
--state Enabled \
--log-analytics-workspace /subscriptions/<subId>/resourceGroups/rg-secure/providers/Microsoft.OperationalInsights/workspaces/la-secure
Microsoft Defender for SQL
- 脆弱性評価 (VA): スキーマ/構成のベースライン設定とスキャンを行い、ストレージにエクスポートし、DevSecOps ゲートと統合します。理由: 明確な修復ガイダンスにより、継続的な衛生状態の維持とドリフト検出を実現します。
- 脅威検出: SQL インジェクション、異常なログイン、見慣れない場所からのログイン、権限の乱用を検出します。理由: 運用オーバーヘッドの少ないマネージドな検出機能であり、ネットワーク制御を補完します。
- アラート対応: Logic Apps、メール、SIEM にルーティングします。トリアージ、ユーザー停止、トークン失効、ファイアウォール強化のためのプレイブックを作成します。理由: コード化された対応により、平均封じ込め時間 (MTTC) を短縮します。
Azure Cosmos DB のセキュリティ
- キーとトークン: プライマリ/セカンダリキーは高い権限を持つため、定期的にローテーションします。データプレーン操作には、Cosmos DB Built-in Data Contributor/Reader などのロールを持つ Azure AD RBAC を優先します。理由: CA と監査を備えた ID ベースのアクセスを実現します。
- ネットワーク制御: 緊急時用に IP ファイアウォールの許可リストを使用し、デフォルトのパスとして Private Endpoints を使用します。可能であればパブリックアクセスを無効にします。理由: 保証されたパス制御とエンドポイント検証を実現します。
- 暗号化: 保存データはデフォルトで暗号化されます。追加の制御のために CMK を有効にします。理由: 外部の暗号化要件と職務の分離を満たします。
- 診断ログとメトリック: DataPlaneRequests、ControlPlaneRequests、および API 固有のカテゴリ (例: MongoRequests) を有効にします。理由: アクセスパターン、スロットリング、異常なリクエストに対するエンドツーエンドの可観測性を実現します。
監視、分類、およびデータ漏洩対策
Key Vaultで保護されたシークレットと接続文字列
- 実行時にマネージドIDを使用してシークレット/キーを取得し、コードや設定にシークレットを保存しない。理由: アプリケーションにおける認証情報の拡散とシークレットのローテーション作業を排除します。
- App Service/FunctionsのKey Vault参照
ConnectionStrings__Sql=@Microsoft.KeyVault(SecretUri=https://mykv.vault.azure.net/secrets/sql-connstr/)
- 可能な場合は、シークレットベースの接続文字列よりもSQLへのAzure ADアクセストークンを優先します。理由: より強力なポリシーと失効処理が可能です。
情報保護とデータ分類
- Microsoft Purview Information Protectionの秘密度ラベル: ドキュメントやメールに暗号化と使用権限を含むラベルを適用し、自動ラベル付けと統合します。理由: ストレージの境界を越えて永続的な保護を提供します。
- SQL Information Protection (Azure SQL): 組み込みのデータ検出と分類を使用し、列にラベルを推奨し、Purviewにエクスポートします。理由: データ資産全体で一元的なガバナンスと一貫したポリシーを実現します。
データ漏洩対策とセキュアなアクセスパターン
- Private Linkを第一に: Storage、SQL、Cosmos DBに対して。パブリックエンドポイントを無効化します。理由: パブリックインターネットからのアクセスを防ぎ、承認されたVNetからのトラフィックであることを強制します。
- 送信フィルタリング: Azure FirewallをFQDNタグとDNATルールと共に使用し、必要なAzureエンドポイントのみを許可します。Private Linkが実用的でない場合は、サービスエンドポイントポリシーを追加します。理由: 送信トラフィックの許可リスト形式(ホワイトリスト)により、攻撃者が制御するエンドポイントへのデータ漏洩をブロックします。
- リソースインスタンスルール: Storageファイアウォールで、特定の信頼されたリソースインスタンス(例: Synapseワークスペース)からのアクセスのみを許可します。理由: ネットワークだけでなく、既知のプロデューサー/コンシューマーにアクセスを紐付けます。
- SASの強化: 可能な限りユーザー委任SASを使用し、HTTPSに限定し、IPを制限し、最小限の権限と最短の有効期間を設定します。失効のために、保存されているアクセス ポリシーに紐付けます。理由: トークンの不正使用を減らし、緊急時の無効化を簡素化します。
- AKSとサービスエンドポイント: サービスエンドポイントに依存する場合、Azure CNIを使用してポッドがVNetのIPを取得し、エンドポイントへのアクセスを継承するようにします。理由: コンテナトラフィックをVNetネイティブの制御に橋渡しします。そうしないと、エンドポイントはNATされたポッドトラフィックに適用されません。
- ログと分析: Storage、SQL、Cosmos DBの診断ログを有効にしてLog Analyticsに送信し、異常なデータ量、SAS発行の急増、頻繁な403エラーに対してアラートを作成します。理由: データ漏洩の試みを早期に検出します。
実践的な問題シナリオ
Spotifyは、CI/CDパイプラインが統合テストを実行できるようにしつつ、開発者サブネットやAKSワークロードから未承認のStorageおよびSQLエンドポイントへのデータ漏洩を防ぐ必要があります。
すべての本番環境のStorageアカウントとAzure SQLサーバーでパブリックネットワークアクセスを無効にし、Private Endpointを作成します。 理由: すべてのデータプレーンのフローをPrivate Link経由に強制し、パブリックなイングレス/エグレスを排除し、VNetとプライベートDNSによる厳格な送信元強制を可能にします。
プライベートDNSゾーンを構成し、ストレージとデータベースリソースのFQDNをプライベートエンドポイントのIPにマッピングするAレコードを設定します。必要なすべてのVNetをリンクします。 理由: パブリックエンドポイントへのDNSリークを防ぎ、クライアントが意図したプライベートリソースに名前解決することを保証します。
Storageファイアウォールで、本番環境のAKSクラスターとビルドエージェントのスケールセットIDに対してのみリソースインスタンスルールを追加し、デフォルトのアクションを拒否に設定します。 理由: 同じVNet内であっても、承認されたリソースIDのみがアカウントにアクセスできるため、信頼されていないワークロードからのラテラルムーブメントやデータ漏洩を阻止します。
AKSでAzure CNIを強制し、サービスエンドポイントをサービスエンドポイントポリシーと共に有効にして、開発ネームスペースが専用の非本番ストレージアカウントにのみ到達できるようにします。 理由: 開発ポッドがVNetのIPを取得するため、ネットワークポリシーが適用されます。エンドポイントポリシーは、プライベートでないトラフィックを承認されたアカウントに厳密に制限します。
アプリコード内のBlobとQueueの共有キーをAzure AD RBACに置き換えます。テストで共有が避けられない場合は、保存されているアクセスポリシーと1時間の有効期限を持つユーザー委任SASを発行します。 理由: IDに紐付いたトークンは監査可能で失効可能です。短命なSASは、トークンがビルドログに漏洩した場合のリスクを最小限に抑えます。
Defender for SQLを脅威検出と脆弱性評価と共に有効にします。アラートとSQL監査ログを中央のLog Analyticsワークスペースにルーティングし、自動化されたLogic Appsでトリアージ(ユーザーの無効化、セッションの失効、一時的なファイアウォール拒否ルールの追加)を行います。 理由: マネージドな検出機能がSQLインジェクションや異常アクセスの封じ込めを加速し、プレイブックが対応を標準化し迅速化します。
TDEとStorageの暗号化スコープを保護するCMKにKey Vaultを使用します。論理的な削除と消去保護を有効にします。キーを四半期ごとにローテーションし、リソース参照を最新のキーバージョンに更新します。 理由: 安全なローテーションを伴う外部化された暗号化制御は、コンプライアンス要件を満たし、運用上のエラーリスクを低減します。
SQL Information Protectionを使用してAzure SQLの機密性の高い列を分類し、Microsoft Purviewにオンボードします。下流のエクスポートにはMIP秘密度ラベルを適用します。 理由: 永続的なラベル付けはデータ抽出物と共に移動し、不正使用を制限し、DLPツールがツールやデバイスを横断して制御を強制できるようにします。
Azure Firewallで送信トラフィックをロックダウンし、ビルド/テストに必要なAzureサービスのみに制限します。StorageとSQLにはFQDNタグを使用し、ワイルドカードの送信HTTP(S)を拒否します。 理由: ポジティブセキュリティモデルにより、トラフィックが承認されたエンドポイントにのみ到達することを保証し、データが攻撃者のドメインに流出するのを防ぎます。
この一連の手順は、パブリックアクセスを防ぎ、誰が何にデータアクセスできるかを制限し、アクセスをシークレットではなくIDに紐付け、監視と迅速な対応を運用可能にします。これらすべてを、スコープを限定し時間制限を設けた例外を通じて、開発者のベロシティを維持しながら実現します。
← コンピューティング、コンテナ、エンドポイントのセキュリティ · すべてのドメイン · 鍵管理、暗号化、証明書 →
これらの問題を練習する → · ExamRoll.ioで時間制限付き練習 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
試験に合格する →