Azure SQL Database と SQL Managed Instance のセキュリティ機能の概要An overview of Azure SQL Database and SQL Managed Instance security capabilities

適用対象: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics (SQL DW)

この記事では、Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics を使用して、アプリケーションのデータ層をセキュリティで保護するための基本の概要を示します。This article outlines the basics of securing the data tier of an application using Azure SQL Database, Azure SQL Managed Instance, and Azure Synapse Analytics. 説明されているセキュリティ戦略では、下の図に示すように多層防御アプローチに従い、外側から内側に移動します。The security strategy described follows the layered defense-in-depth approach as shown in the picture below, and moves from the outside in:

多層防御の図。

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

Microsoft Azure SQL Database、SQL Managed Instance、Azure Synapse Analytics では、クラウドおよびエンタープライズ アプリケーション用のリレーショナル データベース サービスを提供します。Microsoft Azure SQL Database, SQL Managed Instance, and Azure Synapse Analytics provide a relational database service for cloud and enterprise applications. 顧客データを保護できるように、IP アドレスまたは Azure 仮想ネットワーク トラフィック元に基づいてアクセス権が明示的に付与されるまで、ファイアウォールによってサーバーへのネットワーク アクセスが遮断されます。To help protect customer data, firewalls prevent network access to the server until access is explicitly granted based on IP address or Azure Virtual network traffic origin.

IP ファイアウォール規則IP firewall rules

IP ファイアウォール規則では、各要求の送信元 IP アドレスに基づいてデータベースへのアクセス権を付与します。IP firewall rules grant access to databases based on the originating IP address of each request. 詳細については、Azure SQL Database と Azure Synapse Analytics のファイアウォール規則に関するページを参照してください。For more information, see Overview of Azure SQL Database and Azure Synapse Analytics firewall rules.

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

仮想ネットワーク サービス エンドポイントでは、Azure バックボーン経由で仮想ネットワーク接続を拡張し、Azure SQL Database でトラフィック元の仮想ネットワーク サブネットを識別できるようにします。Virtual network service endpoints extend your virtual network connectivity over the Azure backbone and enable Azure SQL Database to identify the virtual network subnet that traffic originates from. Azure SQL Database にトラフィックが到達できるようにするには、SQL のサービス タグを使用して、ネットワーク セキュリティ グループを介したアウトバウンド トラフィックを許可します。To allow traffic to reach Azure SQL Database, use the SQL service tags to allow outbound traffic through Network Security Groups.

仮想ネットワーク規則を使用すると、Azure SQL Database は、仮想ネットワーク内の選択されたサブネットから送信される通信のみを受け入れるようにすることができます。Virtual network rules enable Azure SQL Database to only accept communications that are sent from selected subnets inside a virtual network.

注意

ファイアウォール規則でのアクセスの制御は、SQL Managed Instance には適用され "ません"。Controlling access with firewall rules does not apply to SQL Managed Instance. 必要なネットワーク構成について詳しくは、「マネージド インスタンスへの接続」を参照してくださいFor more information about the networking configuration needed, see Connecting to a managed instance

アクセス管理Access management

重要

Azure 内でのデータベースとサーバーの管理は、ポータル ユーザー アカウントのロール割り当てによって制御されます。Managing databases and servers within Azure is controlled by your portal user account's role assignments. この記事の詳細については、Azure portal での Azure ロールベースのアクセス制御に関する記事を参照してください。For more information on this article, see Azure role-based access control in the Azure portal.

認証Authentication

認証は、ユーザーが本人の主張どおりの人物であることを証明するプロセスです。Authentication is the process of proving the user is who they claim to be. Azure SQL Database と SQL Managed Instance では、次の 2 種類の認証がサポートされています。Azure SQL Database and SQL Managed Instance support two types of authentication:

  • SQL 認証:SQL authentication:

    SQL 認証とは、ユーザーがユーザー名とパスワードを使用して Azure SQL Database または Azure SQL Managed Instance に接続するときに、そのユーザーを認証することを指します。SQL authentication refers to the authentication of a user when connecting to Azure SQL Database or Azure SQL Managed Instance using username and password. サーバーの作成時には、ユーザー名とパスワードを使用して サーバー管理者 ログインを指定する必要があります。A server admin login with a username and password must be specified when the server is being created. これらの資格情報を使用することで、サーバー管理者 はデータベース所有者として、そのサーバーまたはインスタンスにある任意のデータベースを認証できます。Using these credentials, a server admin can authenticate to any database on that server or instance as the database owner. その後、サーバー管理者は、追加の SQL ログインとユーザーを作成できます。これにより、ユーザーはユーザー名とパスワードを使用して接続できるようになります。After that, additional SQL logins and users can be created by the server admin, which enable users to connect using username and password.

  • Azure Active Directory 認証:Azure Active Directory authentication:

    Azure Active Directory 認証は、Azure Active Directory (Azure AD) の ID を使用して Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics に接続するメカニズムです。Azure Active Directory authentication is a mechanism of connecting to Azure SQL Database, Azure SQL Managed Instance and Azure Synapse Analytics by using identities in Azure Active Directory (Azure AD). Azure AD 認証では、管理者は、データベース ユーザーの ID とアクセス許可を他の Azure サービスと共に一元管理できます。Azure AD authentication allows administrators to centrally manage the identities and permissions of database users along with other Azure services in one central location. これにはパスワード ストレージの最小化が含まれます。また、これにより一元化されたパスワードのローテーション ポリシーが有効になります。This includes the minimization of password storage and enables centralized password rotation policies.

    SQL Database で Azure AD 認証を使用するには、Active Directory 管理者 と呼ばれるサーバー管理者を作成する必要があります。A server admin called the Active Directory administrator must be created to use Azure AD authentication with SQL Database. 詳細については、Azure Active Directory 認証を使用した SQL Database への接続に関するページを参照してください。For more information, see Connecting to SQL Database By Using Azure Active Directory Authentication. Azure AD 認証では、マネージド アカウントとフェデレーション アカウントの両方がサポートされます。Azure AD authentication supports both managed and federated accounts. フェデレーション アカウントでは、Azure AD とフェデレーションされた顧客ドメインの Windows ユーザーとグループがサポートされます。The federated accounts support Windows users and groups for a customer domain federated with Azure AD.

    使用できる追加の Azure AD 認証オプションには、多要素認証条件付きアクセスを含む、SQL Server Management Studio 用の Active Directory ユニバーサル認証接続があります。Additional Azure AD authentication options available are Active Directory Universal Authentication for SQL Server Management Studio connections including Multi-Factor Authentication and Conditional Access.

重要

Azure 内でのデータベースとサーバーの管理は、ポータル ユーザー アカウントのロール割り当てによって制御されます。Managing databases and servers within Azure is controlled by your portal user account's role assignments. この記事の詳細については、Azure portal での Azure ロールベースのアクセス制御に関する記事を参照してください。For more information on this article, see Azure role-based access control in Azure portal. ファイアウォール規則でのアクセスの制御は、SQL Managed Instance には適用され "ません"。Controlling access with firewall rules does not apply to SQL Managed Instance. 必要なネットワーク構成の詳細については、マネージド インスタンスへの接続に関する次の記事をご覧ください。Please see the following article on connecting to a managed instance for more information about the networking configuration needed.

承認Authorization

承認は、Azure SQL Database のデータベースまたは Azure SQL Managed Instance 内のユーザーに割り当てられるアクセス許可を指し、ユーザーが実行できる操作を決定するものです。Authorization refers to the permissions assigned to a user within a database in Azure SQL Database or Azure SQL Managed Instance, and determines what the user is allowed to do. アクセス許可を制御するには、データベース ロールにユーザー アカウントを追加してデータベース レベルのアクセス許可をこれらのロールに割り当てるか、特定のオブジェクト レベルのアクセス許可をユーザーに付与することができます。Permissions are controlled by adding user accounts to database roles and assigning database-level permissions to those roles or by granting the user certain object-level permissions. 詳細については、ログインとユーザーに関するページを参照してくださいFor more information, see Logins and users

ベスト プラクティスとして、必要なときにカスタム ロールを作成することをお勧めします。As a best practice, create custom roles when needed. 職務に必要な最小限の特権を持つロールにユーザーを追加してください。Add users to the role with the least privileges required to do their job function. ユーザーにアクセス許可を直接割り当てないでください。Do not assign permissions directly to users. サーバー管理者アカウントは、広範なアクセス許可を持つ組み込み db_owner ロールのメンバーです。管理業務を行うごく少数のユーザーにのみ、これを付与してください。The server admin account is a member of the built-in db_owner role, which has extensive permissions and should only be granted to few users with administrative duties. アプリケーションでは、呼び出されるモジュールの実行コンテキストを指定するために EXECUTE AS を使用するか、限定的なアクセス許可を持つアプリケーション ロールを使用します。For applications, use the EXECUTE AS to specify the execution context of the called module or use Application Roles with limited permissions. こうすると、データベースに接続するアプリケーションに、そのアプリケーションで必要な最小限の特権が確実に付与されます。This practice ensures that the application that connects to the database has the least privileges needed by the application. また、このようなベスト プラクティスに従うことで、職務の分離も促進されます。Following these best practices also fosters separation of duties.

行レベルのセキュリティRow-level security

行レベル セキュリティにより、顧客はクエリを実行するユーザーの特性に基づき、データベース テーブルの行へのアクセスを制御できます (たとえば、グループのメンバーシップや実行コンテキストなど)。Row-Level Security enables customers to control access to rows in a database table based on the characteristics of the user executing a query (for example, group membership or execution context). また、行レベル セキュリティを使用して、ラベルに基づくカスタム セキュリティ概念を実装することもできます。Row-Level Security can also be used to implement custom Label-based security concepts. 詳細については、「行レベルのセキュリティ」を参照してください。For more information, see Row-Level security.

行レベルのセキュリティにより、SQL データベースの個々の行が、クライアントアプリ経由でのユーザーによるアクセスから保護されていることを示す図。

脅威の防止Threat protection

SQL Database と SQL Managed Instance では、監査と脅威検出機能を提供することで、顧客データをセキュリティで保護します。SQL Database and SQL Managed Instance secure customer data by providing auditing and threat detection capabilities.

Azure Monitor ログと Event Hubs での SQL 監査SQL auditing in Azure Monitor logs and Event Hubs

SQL Database と SQL Managed Instance の監査はデータベース アクティビティを追跡し、顧客が所有する Azure ストレージ アカウントの監査ログにデータベース イベントを記録することによって、セキュリティ標準のコンプライアンスを維持できるようにします。SQL Database and SQL Managed Instance auditing tracks database activities and helps maintain compliance with security standards by recording database events to an audit log in a customer-owned Azure storage account. Auditing を使用することで、ユーザーは進行中のデータベース アクティビティを監視し、過去のアクティビティを分析および調査して、潜在的な脅威や疑わしい不正使用、およびセキュリティ違反を特定することができます。Auditing allows users to monitor ongoing database activities, as well as analyze and investigate historical activity to identify potential threats or suspected abuse and security violations. 詳細については、「SQL Database 監査の使用」を参照してください。For more information, see Get started with SQL Database Auditing.

高度な脅威保護Advanced Threat Protection

Advanced Threat Protection では、ログを分析し、通常とは異なる動作と、データベースへのアクセスまたは悪用を試みる有害な可能性がある試行を検出します。Advanced Threat Protection is analyzing your logs to detect unusual behavior and potentially harmful attempts to access or exploit databases. SQL インジェクション、潜在的なデータ侵入、ブルートフォース攻撃などの疑わしいアクティビティや、特権の昇格と不正な資格情報の使用を検出するアクセス パターンの異常に対してアラートが作成されます。Alerts are created for suspicious activities such as SQL injection, potential data infiltration, and brute force attacks or for anomalies in access patterns to catch privilege escalations and breached credentials use. アラートは、Azure Security Center で表示されます。ここでは、疑わしいアクティビティの詳細が提供され、また、脅威を軽減するためのアクションと共に、より詳しい調査のためのレコメンデーションが示されます。Alerts are viewed from the Azure Security Center, where the details of the suspicious activities are provided and recommendations for further investigation given along with actions to mitigate the threat. Advanced Threat Protection は追加料金でサーバーごとに有効にすることができます。Advanced Threat Protection can be enabled per server for an additional fee. 詳細については、SQL Database の Advanced Threat Protection の概要に関する記事を参照してください。For more information, see Get started with SQL Database Advanced Threat Protection.

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

情報の保護と暗号化Information protection and encryption

トランスポート層セキュリティ (転送中の暗号化)Transport Layer Security (Encryption-in-transit)

SQL Database、SQL Managed Instance、Azure Synapse Analytics では、トランスポート層セキュリティ (TLS) を使用して、移動中のデータを暗号化することで、顧客データをセキュリティで保護します。SQL Database, SQL Managed Instance, and Azure Synapse Analytics secure customer data by encrypting data in motion with Transport Layer Security (TLS).

SQL Database、SQL Managed Instance、Azure Synapse Analytics では、すべての接続に対して常に暗号化 (SSL/TLS) が適用されます。SQL Database, SQL Managed Instance, and Azure Synapse Analytics enforce encryption (SSL/TLS) at all times for all connections. これにより、接続文字列での Encrypt または TrustServerCertificate の設定に関係なく、すべてのデータがクライアントとサーバー間の "移動中" に暗号化されることが保証されます。This ensures all data is encrypted "in transit" between the client and server irrespective of the setting of Encrypt or TrustServerCertificate in the connection string.

ベスト プラクティスとして、アプリケーションで使用される接続文字列に、暗号化接続を指定し、サーバー証明書を信頼 しない ことをお勧めします。As a best practice, recommend that in the connection string used by the application, you specify an encrypted connection and not trust the server certificate. これにより、アプリケーションはサーバー証明書を強制的に検証するため、アプリケーションの man in the middle 攻撃に対する脆弱性を防ぎます。This forces your application to verify the server certificate and thus prevents your application from being vulnerable to man in the middle type attacks.

たとえば、ADO.NET ドライバーを使用している場合、これは、Encrypt=TrueTrustServerCertificate=False によって達成されます。For example when using the ADO.NET driver this is accomplished via Encrypt=True and TrustServerCertificate=False. Azure portal から接続文字列を取得する場合は、正しい設定になっています。If you obtain your connection string from the Azure portal, it will have the correct settings.

重要

Microsoft 以外のドライバーは、機能するために、既定で TLS を使用しないか、または TLS の以前のバージョン (1.2 未満) に依存している場合があります。Note that some non-Microsoft drivers may not use TLS by default or rely on an older version of TLS (<1.2) in order to function. この場合も、サーバーは引き続きデータベースへの接続を許可します。In this case the server still allows you to connect to your database. ただし、特に機密データを格納する場合には、そのようなドライバーとアプリケーションによる SQL Database への接続許可について、セキュリティ上のリスクを評価することをお勧めします。However, we recommend that you evaluate the security risks of allowing such drivers and application to connect to SQL Database, especially if you store sensitive data.

TLS と接続の詳細については、TLS に関する考慮事項に関するセクションを参照してくださいFor further information about TLS and connectivity, see TLS considerations

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

SQL Database、SQL Managed Instance、Azure Synapse Analytics の Transparent Data Encryption (TDE) ではセキュリティ層が追加されており、生ファイルまたはバックアップへの未認可またはオフライン アクセスから保存データを保護するのに役立ちます。Transparent data encryption (TDE) for SQL Database, SQL Managed Instance, and Azure Synapse Analytics adds a layer of security to help protect data at rest from unauthorized or offline access to raw files or backups. 一般的なシナリオには、ディスク ドライブやバックアップ テープなどのハードウェアまたはメディアの、データ センターでの盗用や非セキュアな破棄が含まれます。Common scenarios include data center theft or unsecured disposal of hardware or media such as disk drives and backup tapes. TDE では、アプリケーション開発者が既存のアプリケーションを変更する必要がない、AES 暗号化アルゴリズムを使用して、データベース全体を暗号化します。 TDE encrypts the entire database using an AES encryption algorithm, which doesn't require application developers to make any changes to existing applications.

Azure では、新しく作成されたすべてのデータベースが既定で暗号化され、データベース暗号化キーは組み込まれているサーバー証明書によって保護されます。In Azure, all newly created databases are encrypted by default and the database encryption key is protected by a built-in server certificate. 証明書のメンテナンスとローテーションはサービスによって管理され、ユーザーによる入力は必要ありません。Certificate maintenance and rotation are managed by the service and require no input from the user. 暗号化キーの制御を望まれるお客様は、Azure Key Vault でキーを管理できます。Customers who prefer to take control of the encryption keys can manage the keys in Azure Key Vault.

Azure Key Vault のキー管理Key management with Azure Key Vault

Transparent Data Encryption (TDE) の Bring Your Own Key (BYOK) サポートを利用することで、お客様は、 Azure Key Vault (Azure のクラウドベースの外部キー管理システム) を使用して、キーの管理とローテーションの所有権を取得できます。Bring Your Own Key (BYOK) support for Transparent Data Encryption (TDE) allows customers to take ownership of key management and rotation using Azure Key Vault, Azure's cloud-based external key management system. キー コンテナーへのデータベースのアクセスが取り消された場合、データベースを暗号化解除して、メモリに読み込むことはできません。If the database's access to the key vault is revoked, a database cannot be decrypted and read into memory. Azure Key Vault ではキーの一元管理プラットフォームを提供し、厳しく監視されたハードウェア セキュリティ モジュール (HSM) を利用します。また、キー管理とデータ管理の職務の分離を可能にすることで、セキュリティ コンプライアンス要件の遵守を支援します。Azure Key Vault provides a central key management platform, leverages tightly monitored hardware security modules (HSMs), and enables separation of duties between management of keys and data to help meet security compliance requirements.

Always Encrypted (使用時の暗号化)Always Encrypted (Encryption-in-use)

Always Encrypted 機能の基本を示す図。

Always Encrypted は、特定のデータベース列に格納された機微なデータ (クレジット カード番号、国民識別番号、知る必要性 に基づくデータなど) がアクセスされないようにすることを目的とした機能です。Always Encrypted is a feature designed to protect sensitive data stored in specific database columns from access (for example, credit card numbers, national identification numbers, or data on a need to know basis). これには、データベース管理者や、管理タスクを実行するためにデータベースへのアクセスを許可されているものの、暗号化された列の特定のデータには業務上、アクセスする必要がない他の特権ユーザーが含まれます。This includes database administrators or other privileged users who are authorized to access the database to perform management tasks, but have no business need to access the particular data in the encrypted columns. データは常に暗号化されます。つまり、暗号化されたデータは、暗号化キーにアクセスできるクライアント アプリケーションによって処理される場合にのみ、暗号化解除されます。The data is always encrypted, which means the encrypted data is decrypted only for processing by client applications with access to the encryption key. 暗号化キーは SQL Database または SQL Managed Instance に公開されることはなく、Windows 証明書ストアまたは Azure Key Vault に格納できます。The encryption key is never exposed to SQL Database or SQL Managed Instance and can be stored either in the Windows Certificate Store or in Azure Key Vault.

動的データ マスクDynamic data masking

動的データ マスキングを示す図。

動的データ マスクは、特権のないユーザーに対してデリケートなデータをマスクし、データの公開を制限します。Dynamic data masking limits sensitive data exposure by masking it to non-privileged users. 動的データ マスクは、Azure SQL Database と SQL Managed Instance の中で機密の可能性があるデータを自動的に検出し、アプリケーション層への影響を最小限に抑えながらそれらのフィールドをマスクするための具体的な推奨事項を提示します。Dynamic data masking automatically discovers potentially sensitive data in Azure SQL Database and SQL Managed Instance and provides actionable recommendations to mask these fields, with minimal impact to the application layer. 指定されたデータベース フィールドに対するクエリの結果セットに含まれる機密データを難読化しますが、データベース内のデータは変更しません。It works by obfuscating the sensitive data in the result set of a query over designated database fields, while the data in the database is not changed. 詳細については、SQL Database と SQL Managed Instance の動的データ マスクに関するページを参照してください。For more information, see Get started with SQL Database and SQL Managed Instance dynamic data masking.

セキュリティ管理Security management

脆弱性評価Vulnerability assessment

脆弱性評価では、全体的なデータベース セキュリティを積極的に向上させる目的で、データベースの潜在的な脆弱性を検出、追跡、修復できるサービスを簡単に構成できます。Vulnerability assessment is an easy to configure service that can discover, track, and help remediate potential database vulnerabilities with the goal to proactively improve overall database security. 脆弱性評価 (VA) は、高度な SQL セキュリティ機能の統合パッケージである Azure Defender for SQL オファリングの一部です。Vulnerability assessment (VA) is part of the Azure Defender for SQL offering, which is a unified package for advanced SQL security capabilities. 脆弱性評価は、Azure Defender for SQL ポータルを使用して、一元的にアクセスおよび管理できます。Vulnerability assessment can be accessed and managed via the central Azure Defender for SQL portal.

データの検出と分類Data discovery and classification

データの検出と分類 (現在プレビュー段階) には、データベース内の機密データの検出、分類、ラベル付け、および保護を行うための、Azure SQL Database と SQL Managed Instance に組み込まれた高度な機能が用意されています。Data discovery and classification (currently in preview) provides advanced capabilities built into Azure SQL Database and SQL Managed Instance for discovering, classifying, labeling, and protecting the sensitive data in your databases. 最も機微なデータ (ビジネス/金融、医療、個人データなど) の検出と分類は、組織の情報保護水準において極めて重要な役割を果たします。Discovering and classifying your utmost sensitive data (business/financial, healthcare, personal data, etc.) can play a pivotal role in your organizational Information protection stature. 次のような場合にインフラストラクチャとして使用できます。It can serve as infrastructure for:

  • さまざまなセキュリティ シナリオ (機微なデータに対する異常なアクセスの監視 (監査) とアラートなど)。Various security scenarios, such as monitoring (auditing) and alerting on anomalous access to sensitive data.
  • 非常に機微なデータを含むデータベースへのアクセスの制御と、セキュリティの強化。Controlling access to, and hardening the security of, databases containing highly sensitive data.
  • データのプライバシー基準および規制のコンプライアンス要件を満たす支援。Helping meet data privacy standards and regulatory compliance requirements.

詳細については、「データの検出と分類の概要」を参照してください。For more information, see Get started with data discovery and classification.

コンプライアンスCompliance

アプリケーションでさまざまなセキュリティ要件を満たすのに役立つ上記の機能以外にも、Azure SQL Database では定期的な監査に参加し、さまざまなコンプライアンス基準に認定されています。In addition to the above features and functionality that can help your application meet various security requirements, Azure SQL Database also participates in regular audits, and has been certified against a number of compliance standards. 詳細については、Microsoft Azure セキュリティ センターに関するページを参照してください。ここから最新の SQL Database コンプライアンス証明書の一覧を入手できます。For more information, see the Microsoft Azure Trust Center where you can find the most current list of SQL Database compliance certifications.

次のステップNext steps

  • SQL Database と SQL Managed Instance でのログイン、ユーザー アカウント、データベース ロール、およびアクセス許可の使用については、ログインとユーザー アカウントの管理に関するページをご覧ください。For a discussion of the use of logins, user accounts, database roles, and permissions in SQL Database and SQL Managed Instance, see Manage logins and user accounts.
  • データベース監査については、監査に関するページをご覧ください。For a discussion of database auditing, see auditing.
  • 脅威の検出については、脅威の検出に関するページをご覧ください。For a discussion of threat detection, see threat detection.