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

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

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

Diagram of layered defense-in-depth. Customer data is encased in layers of network security, access management and threat and information protections.

Note

Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。

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

Microsoft 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 は、仮想ネットワーク内の選択されたサブネットから送信される通信のみを受け入れるようにすることができます。

Note

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

アクセス管理

重要

Azure 内でのデータベースとサーバーの管理は、ポータル ユーザー アカウントのロール割り当てによって制御されます。 この記事の詳細については、Azure portal での Azure ロールベースのアクセス制御に関する記事を参照してください。

認証

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

  • SQL 認証:

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

  • Microsoft Entra 認証:

    Microsoft Entra 認証は、Microsoft Entra ID の ID を使用して Azure SQL DatabaseAzure SQL Managed Instance、および Azure 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 を使用して実装される方法について説明します。

重要

Azure 内でのデータベースとサーバーの管理は、ポータル ユーザー アカウントのロール割り当てによって制御されます。 この記事の詳細については、Azure portal での Azure ロールベースのアクセス制御に関する記事を参照してください。 ファイアウォール規則でのアクセスの制御は、SQL Managed Instance には適用され "ません"。 必要なネットワーク構成の詳細については、マネージド インスタンスへの接続に関する次の記事をご覧ください。

承認

承認とは、データベース内のリソースとコマンドに対するアクセスを制御することを意味します。 これを行うには、Azure SQL Database または Azure SQL Managed Instance のデータベース内でユーザーにアクセス許可を割り当てます。 アクセス許可の理想的な管理方法は、データベース ロールにユーザー アカウントを追加し、データベース レベルのアクセス許可をこれらのロールに割り当てることです。 または、個々のユーザーに特定のオブジェクト レベルのアクセス許可を付与することもできます。 詳細については、ログインとユーザーに関するページを参照してください

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

行レベルのセキュリティ

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

Diagram showing that Row-Level Security shields individual rows of a SQL database from access by users via a client app.

脅威の防止

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

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

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

高度な脅威保護

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

Diagram showing SQL Threat Detection monitoring access to the SQL database for a web app from an external attacker and malicious insider.

情報の保護と暗号化

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

SQL Database、SQL Managed Instance、Azure Synapse Analytics では、トランスポート層セキュリティ (TLS) を使用して、移動中のデータを暗号化することで、顧客データをセキュリティで保護します。

SQL Database、SQL Managed Instance、Azure Synapse Analytics では、すべての接続に対して常に暗号化 (SSL/TLS) が適用されます。 これにより、接続文字列での Encrypt または TrustServerCertificate の設定に関係なく、すべてのデータがクライアントとサーバー間の "移動中" に暗号化されることが保証されます。

ベスト プラクティスとして、アプリケーションで使用される接続文字列に、暗号化接続を指定し、サーバー証明書を信頼しないことをお勧めします。 これにより、アプリケーションはサーバー証明書を強制的に検証するため、アプリケーションの man in the middle 攻撃に対する脆弱性を防ぎます。

たとえば、ADO.NET ドライバーを使用している場合、これは、Encrypt=TrueTrustServerCertificate=False によって達成されます。 Azure portal から接続文字列を取得する場合は、正しい設定になっています。

重要

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

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

Transparent Data Encryption (保存時の暗号化)

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

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

Azure Key Vault のキー管理

Transparent Data Encryption (TDE)  の Bring Your Own Key (BYOK) サポートを利用することで、お客様は、Azure Key Vault (Azure のクラウドベースの外部キー管理システム) を使用して、キーの管理とローテーションの所有権を取得できます。 キー コンテナーへのデータベースのアクセスが取り消された場合、データベースを暗号化解除して、メモリに読み込むことはできません。 Azure Key Vault ではキーの一元管理プラットフォームを提供し、厳しく監視されたハードウェア セキュリティ モジュール (HSM) を利用します。また、キー管理とデータ管理の職務の分離を可能にすることで、セキュリティ コンプライアンス要件の遵守を支援します。

Always Encrypted (使用時の暗号化)

Diagram showing the basics of the Always Encrypted feature. An SQL database with a lock is only accessed by an app containing a key.

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

動的データ マスク

Diagram showing dynamic data masking. A business app sends data to a SQL database which masks the data before sending it back to the business app.

動的データ マスクは、特権のないユーザーに対してデリケートなデータをマスクし、データの公開を制限します。 動的データ マスクは、Azure SQL Database と SQL Managed Instance の中で機密の可能性があるデータを自動的に検出し、アプリケーション層への影響を最小限に抑えながらそれらのフィールドをマスクするための具体的な推奨事項を提示します。 指定されたデータベース フィールドに対するクエリの結果セットに含まれる機密データを難読化しますが、データベース内のデータは変更しません。 詳細については、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 コンプライアンス証明書の一覧を入手できます。

次のステップ

  • SQL Database と SQL Managed Instance でのログイン、ユーザー アカウント、データベース ロール、およびアクセス許可の使用については、ログインとユーザー アカウントの管理に関するページをご覧ください。
  • データベース監査については、監査に関するページをご覧ください。
  • 脅威の検出については、脅威の検出に関するページをご覧ください。