次の方法で共有


Azure SQL Database と SQL Managed Instance のセキュリティ機能の概要

適用対象:Azure SQL データベースAzure SQL Managed InstanceAzure Synapse Analytics

この記事では、Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics を使用して、アプリケーションのデータ層をセキュリティで保護するための基本の概要を示します。 説明されているセキュリティ戦略は、次の図に示すように多層防御のアプローチに従い、次のように外部から移動します。

多層防御の図。顧客データは、ネットワーク セキュリティ、アクセス管理、脅威と情報の保護のレイヤーに含まれています。

ネットワークのセキュリティ

Azure SQL Database、Azure SQL Managed Instance、Azure Synapse Analytics は、クラウドおよびエンタープライズ アプリケーション用のリレーショナル データベース サービスを提供します。 顧客データを保護できるように、IP アドレスまたは Azure 仮想ネットワーク トラフィック元に基づいてアクセス権が明示的に付与されるまで、ファイアウォールによってサーバーへのネットワーク アクセスが遮断されます。

IP ファイアウォール規則

IP ファイアウォール規則では、各要求の送信元 IP アドレスに基づいてデータベースへのアクセス権を付与します。 詳細については、Azure SQL Database と Azure Synapse Analytics のファイアウォール規則に関するページを参照してください。

仮想ネットワーク ファイアウォールの規則

仮想ネットワーク サービス エンドポイントでは、Azure バックボーン経由で仮想ネットワーク接続を拡張し、Azure SQL Database でトラフィック元の仮想ネットワーク サブネットを識別できるようにします。 Azure SQL Database にトラフィックが到達できるようにするには、SQL のサービス タグを使用して、ネットワーク セキュリティ グループを介したアウトバウンド トラフィックを許可します。

  • 仮想ネットワーク規則を使用すると、Azure SQL Database は、仮想ネットワーク内の選択されたサブネットから送信される通信のみを受け入れるようにすることができます。
  • ファイアウォール規則によるアクセスの制御は 、SQL Managed Instance には適用されません。 必要なネットワーク構成について詳しくは、「マネージド インスタンスへの接続」を参照してください

ファイアウォール規則によるアクセスの制御は 、SQL Managed Instance には適用されません。 必要なネットワーク構成について詳しくは、「マネージド インスタンスへの接続」を参照してください

ネットワーク セキュリティ境界

Azure ネットワーク セキュリティ境界は、仮想ネットワークの外部にデプロイされるサービスとしてのプラットフォーム (PaaS) リソースの周囲に論理ネットワーク境界を作成します。

  • Azure ネットワーク セキュリティ境界は、Azure SQL Database へのパブリック ネットワーク アクセスを制御するのに役立ちます。
  • Azure ネットワーク セキュリティ境界を使用したアクセスの制御は、Azure SQL Managed Instance には適用されません。

重要

ネットワーク セキュリティ境界を備えた Azure SQL Database は現在プレビュー段階です。 プレビューはサービス レベル アグリーメントなしで提供されます。運用環境のワークロードにはお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳細については、「 Microsoft Azure プレビューの追加使用条件」を参照してください。

認証

認証は、ユーザーが本人の主張どおりの人物であることを証明するプロセスです。 Azure SQL Database と SQL Managed Instance では、Microsoft Entra ID (旧称 Azure Active Directory) による認証と SQL 認証がサポートされています。 SQL Managed Instance の場合は、Microsoft Entra プリンシパルの Windows 認証が追加でサポートされています。

  • Microsoft Entra 認証:

    Microsoft Entra 認証は、Microsoft Entra ID の ID を使用して Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics に接続するためのメカニズムです。 Microsoft Entra 認証を使用すると、管理者はデータベース ユーザーの ID とアクセス許可を他の Azure サービスと共に一元管理できます。 これは、シークレットとパスワードの使用を排除するのに役立ちます。

    SQL Database で Microsoft Entra 認証を使用するには、Microsoft Entra 管理者と呼ばれるサーバー管理者を作成する必要があります。 詳細については、Microsoft Entra 認証を使用した SQL Database への接続に関する記事を参照してください。 Microsoft Entra 認証では、マネージド アカウントとフェデレーション アカウントの両方がサポートされます。 フェデレーション アカウントでは、Microsoft Entra ID とフェデレーションされた顧客ドメインの Windows ユーザーとグループがサポートされます。

    Microsoft Entra では、多要素認証統合Windows 認証条件付きアクセスなどさまざまな認証オプションがサポートされています。

  • Microsoft Entra プリンシパルの Windows 認証:

    Microsoft Entra プリンシパルの Kerberos 認証により、Azure SQL Managed Instance で Windows 認証が有効になります。 マネージド インスタンスの Windows 認証を使用すると、スムーズなユーザー エクスペリエンスを維持しながら既存のサービスをクラウドに移行し、インフラストラクチャの最新化の基礎を提供できます。

    Microsoft Entra プリンシパルに対して Windows 認証を有効にするには、Microsoft Entra テナントを独立した Kerberos 領域に変換し、顧客ドメインに受信信頼を作成します。 Azure SQL Managed Instance の Windows 認証が Microsoft Entra ID と Kerberos を使用して実装される方法について説明します。

  • SQL 認証:

    SQL 認証とは、ユーザーがユーザー名とパスワードを使用して Azure SQL Database または Azure SQL Managed Instance に接続するときに、そのユーザーを認証することを指します。 サーバーの作成時には、ユーザー名とパスワードを使用してサーバー管理者ログインを指定する必要があります。 これらの資格情報を使用することで、サーバー管理者はデータベース所有者として、そのサーバーまたはインスタンスにある任意のデータベースを認証できます。 その後、サーバー管理者が他の SQL ログインとユーザーを作成し、ユーザーがユーザー名とパスワードを使用して接続できるようにします。

承認とアクセスの管理

承認とは、サーバーとデータベースの管理、およびデータベース内のデータ、リソース、およびコマンドへのアクセスを制御することです。 これを行うには、Azure SQL Database または Azure SQL Managed Instance のデータベース内でユーザーにアクセス許可を割り当てます。 Azure 内でのデータベースとサーバーの管理は、ポータル ユーザー アカウントのロール割り当てによって制御されます。 詳細については、Azure portal での Azure ロールベースのアクセス制御に関するページをご覧ください。

アクセス許可の理想的な管理方法は、データベース ロールにユーザー アカウントを追加し、データベース レベルのアクセス許可をこれらのロールに割り当てることです。 または、個々のユーザーに特定のオブジェクト レベルのアクセス許可を付与することもできます。 詳細については、「ログインとユーザー」を参照してください。

さらに、Azure SQL Managed Instance には、サーバー/インスタンスのアクセス許可を管理するための サーバー レベルのロール (固定またはカスタム) が用意されています。 サーバーレベルのロールは、サーバー全体にわたる権限スコープを持っています。 サーバー レベルのプリンシパルは、サーバー レベルのロールに追加できます。

ベスト プラクティスとして、必要なときにカスタム ロールを作成することをお勧めします。 職務に必要な最小限の特権を持つロールにユーザーを追加してください。 ユーザーにアクセス許可を直接割り当てないでください。 サーバー管理者アカウントは、広範なアクセス許可を持つ組み込み db_owner ロールのメンバーです。管理業務を行うごく少数のユーザーにのみ、これを付与してください。 ユーザーが実行できる処理の範囲をさらに制限するには、EXECUTE AS を使用して、呼び出されるモジュールの実行コンテキストを指定できます。 これらのベスト プラクティスに従うことも、職務の分離に向けた基本的なステップです。

行レベルのセキュリティ

行レベル セキュリティにより、顧客はクエリを実行するユーザーの特性に基づき、データベース テーブルの行へのアクセスを制御できます (たとえば、グループのメンバーシップや実行コンテキストなど)。 また、行レベル セキュリティを使用して、ラベルに基づくカスタム セキュリティ概念を実装することもできます。 詳細については、「行レベルのセキュリティ」を参照してください。

Row-Level Security が、クライアント アプリを介してユーザーによるアクセスから SQL データベースの個々の行を保護することを示す図。

脅威の防止

Azure SQL Database と SQL Managed Instance は、監査機能と脅威検出機能を提供することで、顧客データをセキュリティで保護します。

Azure Monitor ログと Event Hubs での SQL 監査

SQL Database と SQL Managed Instance の監査はデータベース アクティビティを追跡し、顧客が所有する Azure ストレージ アカウントの監査ログにデータベース イベントを記録することによって、セキュリティ標準のコンプライアンスを維持できるようにします。 Auditing を使用することで、ユーザーは進行中のデータベース アクティビティを監視し、過去のアクティビティを分析および調査して、潜在的な脅威や疑わしい不正使用、およびセキュリティ違反を特定することができます。 詳細については、「SQL Database 監査の使用」を参照してください。

Advanced Threat Protection

Advanced Threat Protection では、ログを分析し、通常とは異なる動作と、データベースへのアクセスまたは悪用を試みる有害な可能性がある試行を検出します。 SQL インジェクション、潜在的なデータ侵入、ブルートフォース攻撃などの疑わしいアクティビティや、特権の昇格と不正な資格情報の使用を検出するアクセス パターンの異常に対してアラートが作成されます。 アラートは、Microsoft Defender for Cloud で表示されます。ここでは、疑わしいアクティビティの詳細が提供され、また、脅威を軽減するためのアクションと共に、より詳しい調査のためのレコメンデーションが示されます。 Advanced Threat Protection は追加料金でサーバーごとに有効にすることができます。 詳細については、SQL Database の Advanced Threat Protection の概要に関する記事を参照してください。

外部の攻撃者や悪意のある内部関係者からの Web アプリの SQL データベースへの SQL 脅威検出監視アクセスを示す図。

情報の保護と暗号化

トランスポート層セキュリティ (転送中の暗号化)

SQL Database、SQL Managed Instance、Azure Synapse Analytics では、トランスポート層セキュリティ (TLS) を使用して、移動中のデータを暗号化することで、顧客データをセキュリティで保護します。 TLS で暗号化された接続は常に適用されます。 これにより、すべてのデータがクライアントとサーバーの間で転送中に暗号化されます。

具体的には、これらのサービスによって管理される SQL Server のすべてのインスタンスは、構成フラグForceEncryptionYesに設定されています。 クライアントとドライバーは、いずれかのサービスに接続できるように、暗号化された接続をサポートする必要があります。 したがって、接続できる TDS プロトコルの最小バージョンは TDS 7.1 です。

ベスト プラクティスとして、 TDS 8.0 対応 SQL ドライバーがある場合は、 厳密な接続暗号化を使用することをお勧めします。

ドライバーで TDS 8.0 がサポートされていない場合は、必須の暗号化を使用し、サーバー証明書を信頼しないでください。 たとえば、ADO.NET ドライバーを使用する場合は、接続文字列で Encrypt=TrueTrustServerCertificate=False を使用してこれを行います。 Azure portal から取得した接続文字列は、これらの値で既に構成されています。

運用環境では、パラメーター TrustServerCertificateTrue に設定することは避ける必要があります。 TrustServerCertificate=True は許容されすぎ、中間者攻撃に対して保護されません。 代わりに、クライアントでサーバー証明書に別のドメイン名が必要な場合は、 HostNameInCertificate パラメーターを使用して検証用の正しいドメイン名を指定します。

たとえば、ADO.NET ドライバーを使用してカスタム ドメイン名contoso-instance.123456.database.windows.netを使用してマネージド インスタンス contoso-instance.contoso.comに接続する場合は、接続パラメーターをEncrypt=True設定し、HostNameInCertificate=contoso-instance.123456.database.windows.net設定します。 これにより、ドライバーは、予期される VNet ローカル エンドポイント ドメイン名に対してサーバー証明書を検証できます。

重要

Microsoft 以外のドライバーの中には、既定で TLS を使用しない場合や、機能するために古いバージョンの TLS (<1.2) に依存している場合があります。 この場合も、サーバーは引き続きデータベースへの接続を許可します。 ただし、特に機密データを格納する場合には、そのようなドライバーとアプリケーションによる SQL Database への接続許可について、セキュリティ上のリスクを評価することをお勧めします。

TLS と接続の詳細については、 TLS に関する考慮事項を参照してください。

サービス マネージド キーを使用した透過的なデータ暗号化 (保存時の暗号化)

SQL Database、SQL Managed Instance、Azure Synapse Analytics の Transparent Data Encryption (TDE) ではセキュリティ層が追加されており、生ファイルまたはバックアップへの未認可またはオフライン アクセスから保存データを保護するのに役立ちます。 一般的なシナリオには、ディスク ドライブやバックアップ テープなどのハードウェアまたはメディアの、データ センターでの盗用や非セキュアな破棄が含まれます。 TDE では、アプリケーション開発者が既存のアプリケーションを変更する必要がない、AES 暗号化アルゴリズムを使用して、データベース全体を暗号化します。

Azure では、新しく作成されたすべてのデータベースが既定で暗号化され、データベース暗号化キーは組み込まれているサーバー証明書によって保護されます。 証明書のメンテナンスとローテーションはサービスによって管理され、ユーザーによる入力は必要ありません。 暗号化キーの制御を望まれるお客様は、Azure Key Vault でキーを管理できます。

カスタマー マネージド キーを使用した透過的なデータ暗号化 (保存時の暗号化)

暗号化キーをより詳細に制御する必要のあるお客様のために、 透過的なデータ暗号化 (TDE) では カスタマー マネージド キーがサポートされます。 この CMK は論理サーバーに関連付け、そのサーバーの下にあるすべてのデータベースのデータベース暗号化キーをラップします。 または、CMK を個々の データベース レベルで構成することもできます。 CMK を管理することで、顧客はキーのローテーション、失効、監査を制御できます。これは、多くの場合、コンプライアンスまたは厳格なセキュリティ ポリシーに必要です。

Always Encrypted と、セキュリティで保護されたエンクレーブを使用した Always Encrypted (使用中の暗号化)

Always Encrypted 機能の基本を示す図。ロックを持つ SQL データベースには、キーを含むアプリのみがアクセスします。

セキュリティで保護されたエンクレーブを備えた Always Encrypted と Always Encrypted は、特定のデータベース列に格納されている機密データをアクセスから保護するように設計された機能です (クレジット カード番号、国/地域の ID 番号、知る必要があるデータなど)。 これには、データベース管理者や、管理タスクを実行するためにデータベースへのアクセスを許可されているものの、暗号化された列の特定のデータには業務上、アクセスする必要がない他の特権ユーザーが含まれます。 データは常に暗号化されます。つまり、暗号化されたデータは、暗号化キーにアクセスできるクライアント アプリケーションによって処理される場合にのみ、暗号化解除されます。 暗号化キーは SQL Database または SQL Managed Instance に公開されることはなく、Windows 証明書ストアまたは Azure Key Vault に格納できます。

動的データ マスク

動的データ マスクを示す図。ビジネス アプリは、データをビジネス アプリに送り返す前に、データをマスクするデータを SQL データベースに送信します。

動的データ マスキングでは、特権のないユーザーに対して機密データをマスキングすることでデータの公開を制限します。 動的データ マスクは、Azure SQL Database と SQL Managed Instance の中で機密の可能性があるデータを自動的に検出し、アプリケーション層への影響を最小限に抑えながらそれらのフィールドをマスクするための具体的な推奨事項を提示します。 これは、指定されたデータベース フィールドに対してクエリの結果セット内の機密データを難読化することによって機能しますが、データベース内のデータは変更されません。 詳細については、SQL Database と SQL Managed Instance の動的データ マスクに関するページを参照してください。

Ledger

Azure SQL Database と SQL Managed Instance の台帳は、データ整合性の暗号化証明を提供する機能です。 台帳では、データの改ざん証拠機能があります。 監査者や他のビジネス関係者などの他の関係者に対して、データが改ざんされていないことを暗号学的に証明できます。

台帳では、改ざんを防止するテクノロジを使用して、変更できない台帳にデータベースの変更を記録し、承認されていない変更を確実に検出できます。 これは、複数の当事者間の規制コンプライアンス、監査可能性、信頼を必要とするシナリオに特に役立ちます。 台帳を有効にすると、お客様はデータの整合性を確認し、不正行為やデータ操作のリスクを軽減できます。

セキュリティ管理

脆弱性評価

脆弱性評価では、全体的なデータベース セキュリティを積極的に向上させる目的で、データベースの潜在的な脆弱性を検出、追跡、修復できるサービスを簡単に構成できます。 脆弱性評価 (VA) は、高度な SQL セキュリティ機能の統合パッケージである Microsoft Defender for SQL オファリングの一部です。 脆弱性評価は、中心となる Microsoft Defender for SQL ポータルからアクセスし、管理できます。

データの検出と分類

データの検出と分類 (現在プレビュー段階) では、データベース内の機密データを検出、分類、ラベル付けするための基本的な機能が Azure SQL Database と SQL Managed Instance に組み込まれています。 最も機微なデータ (ビジネス/金融、医療、個人データなど) の検出と分類は、組織の情報保護水準において極めて重要な役割を果たします。 次のような場合にインフラストラクチャとして使用できます。

  • さまざまなセキュリティ シナリオ (機微なデータに対する異常なアクセスの監視 (監査) とアラートなど)。
  • 非常に機微なデータを含むデータベースへのアクセスの制御と、セキュリティの強化。
  • データのプライバシー基準および規制のコンプライアンス要件を満たす支援。

詳細については、「データの検出と分類の概要」を参照してください。

コンプライアンス

アプリケーションでさまざまなセキュリティ要件を満たすのに役立つ上記の機能以外にも、Azure SQL Database では定期的な監査に参加し、さまざまなコンプライアンス基準に認定されています。 詳細については、Microsoft Azure Trust Centerに関するページを参照してください。ここから最新の SQL Database コンプライアンス証明書の一覧を入手できます。