Azure のデータベース セキュリティに関するベスト プラクティスAzure database security best practices

この記事では、データベース セキュリティに関するベスト プラクティスについて説明します。This article describes best practices for database security.

これらのベスト プラクティスは、集約された意見に基づくものであり、Azure プラットフォームの最新の機能に対応しています。The best practices are based on a consensus of opinion, and they work with current Azure platform capabilities and feature sets. 人の考えやテクノロジは時間の経過と共に変化するため、この記事は、それらの変化が反映されるように定期的に更新されます。Opinions and technologies change over time and this article is updated on a regular basis to reflect those changes.

データベースをセキュリティで保護するSecure databases

データベースを管理するうえでセキュリティは最大の懸念事項であり、Azure SQL Database では常に優先事項として扱われてきました。Security is a top concern for managing databases, and it has always been a priority for Azure SQL Database. データベースは、大部分の規制要件やセキュリティ要件 (HIPAA、ISO 27001/27002、PCI DSS レベル 1 など) を満たすように厳密なセキュリティで保護することができます。Your databases can be tightly secured to help satisfy most regulatory or security requirements, including HIPAA, ISO 27001/27002, and PCI DSS Level 1. 現在のセキュリティ コンプライアンス認定のリストは、Microsoft セキュリティ センターのサイトで確認できます。A current list of security compliance certifications is available at the Microsoft Trust Center site. 規制の要件に基づいて特定の Azure データセンターにデータベースを配置することも選択できます。You also can choose to place your databases in specific Azure datacenters based on regulatory requirements.

ファイアウォール規則を使用してデータベースへのアクセスを制限するUse firewall rules to restrict database access

Microsoft Azure SQL Database は、Azure およびその他のインターネット ベースのアプリケーション用のリレーショナル データベース サービスを提供します。Microsoft Azure SQL Database provides a relational database service for Azure and other internet-based applications. アクセス セキュリティを提供するために、SQL Database は以下を使用してアクセスを制御します。To provide access security, SQL Database controls access with:

  • IP アドレスによって接続を制限するファイアウォール規則。Firewall rules that limit connectivity by IP address.
  • ユーザーに ID の証明を求める認証メカニズム。Authentication mechanisms that require users to prove their identity.
  • ユーザーによる特定のアクションとデータを制限する認証メカニズム。Authorization mechanisms that limit users to specific actions and data.

ファイアウォールは、どのコンピューターに権限を持たせるかを指定するまで、データベース サーバーへのすべてのアクセスを遮断します。Firewalls prevent all access to your database server until you specify which computers have permission. ファイアウォールは、各要求の送信元 IP アドレスに基づいてデータベースへのアクセス権を付与します。The firewall grants access to databases based on the originating IP address of each request.

次の図は、SQL database でサーバーのファイアウォールを設定する場所を示しています。The following figure shows where you set a server firewall in SQL Database:

ファイアウォール規則

Azure SQL Database サービスは TCP ポート 1433 経由でのみ利用できます。The Azure SQL Database service is available only through TCP port 1433. コンピューターから SQL Database にアクセスするには、クライアント コンピューターのファイアウォールで、TCP ポート 1433 での TCP 通信の発信を許可する必要があります。To access a SQL database from your computer, ensure that your client computer firewall allows outgoing TCP communication on TCP port 1433. 他のアプリケーションでこれらの接続を必要としない場合は、ファイアウォール規則を使用して TCP ポート 1433 で着信接続をブロックします。Block inbound connections on TCP port 1433 by using firewall rules, if you don’t need these connections for other applications.

接続処理の一部として、Azure 仮想マシンからの接続は worker ロールごとに IP アドレスとポートにリダイレクトされます。As part of the connection process, connections from Azure virtual machines are redirected to an IP address and port that are unique for each worker role. ポート番号の範囲は、11000 ~ 11999 です。The port number is in the range from 11000 to 11999. TCP ポートの詳細については、「ADO.NET 4.5 用の 1433 以外のポート」を参照してください。For more information about TCP ports, see Ports beyond 1433 for ADO.NET 4.5.

SQL Database のファイアウォール規則の詳細については、SQL Database のファイアウォール規則に関するページを参照してください。For more information about firewall rules in SQL Database, see SQL Database firewall rules.

注意

IP 規則に加えて、ファイアウォールは仮想ネットワーク規則を管理します。In addition to IP rules, the firewall manages virtual network rules. 仮想ネットワーク規則は、仮想ネットワーク サービス エンドポイントに基づいています。Virtual network rules are based on virtual network service endpoints. 仮想ネットワーク規則は、場合によっては IP 規則より望ましい場合があります。Virtual network rules might be preferable to IP rules in some cases. 詳細については、Azure SQL Database の仮想ネットワーク サービス エンドポイントと規則に関する記事をご覧ください。To learn more, see Virtual network service endpoints and rules for Azure SQL Database.

データベース認証を有効にするEnable database authentication

SQL Database は SQL サーバー認証と Azure AD Authentication の 2 種類の認証をサポートしています。SQL Database supports two types of authentication, SQL Server authentication and Azure AD authentication.

SQL Server 認証SQL Server authentication

次のような利点があります。Benefits include the following:

  • Windows ドメインで認証されていないユーザーがいるオペレーティング システム混在環境を SQL Database がサポートできる。It allows SQL Database to support environments with mixed operating systems, where all users are not authenticated by a Windows domain.
  • SQL Server 認証を必要とする、古いアプリケーションやパートナーが提供するアプリケーションを SQL Database がサポートできる。Allows SQL Database to support older applications and partner-supplied applications that require SQL Server authentication.
  • ユーザーが不明または信頼されていないドメインから接続できる場合。Allows users to connect from unknown or untrusted domains. たとえば、既存の顧客が割り当てられた SQL Server ログインで接続して注文の状態を受信するアプリケーションです。An example is an application where established customers connect with assigned SQL Server logins to receive the status of their orders.
  • ユーザーが独自の ID を作成する Web ベースのアプリケーションを SQL Database がサポートできる。Allows SQL Database to support web-based applications where users create their own identities.
  • ソフトウェア開発者が、事前設定された既知の SQL Server ログインに基づく複雑なアクセス許可階層を使用してアプリケーションを配布できる場合。Allows software developers to distribute their applications by using a complex permission hierarchy based on known, preset SQL Server logins.

注意

SQL Server 認証は Kerberos セキュリティ プロトコルを使用できません。SQL Server authentication cannot use the Kerberos security protocol.

SQL Server 認証を使用する場合は、次のことを行う必要があります。If you use SQL Server authentication, you must:

Azure Active Directory (AD) 認証Azure Active Directory (AD) authentication

Azure AD 認証は、Azure AD の ID を使用して Azure SQL Database と SQL Data Warehouse に接続するメカニズムです。Azure AD authentication is a mechanism of connecting to Azure SQL Database and SQL Data Warehouse by using identities in Azure AD. Azure AD 認証を使用すると、データベース ユーザーの ID や他の Microsoft サービスを一元管理できます。With Azure AD authentication, you can manage the identities of database users and other Microsoft services in one central location. ID の一元管理では、1 か所でデータベース ユーザーを管理できるようになるため、アクセス許可の管理が容易になります。Central ID management provides a single place to manage database users and simplifies permission management.

注意

SQL Server 認証の使用よりも Azure AD 認証の使用をお勧めします。We recommend the use of Azure AD authentication over the use of SQL Server authentication.

次のような利点があります。Benefits include the following:

  • SQL Server 認証の代替方法が用意されています。It provides an alternative to SQL Server authentication.
  • データベース サーバー全体でユーザー ID が急増するのを防ぎます。It helps stop the proliferation of user identities across database servers.
  • 1 か所でのパスワードのローテーションを許可します。It allows password rotation in a single place.
  • 顧客は外部の (Azure AD) グループを使用してデータベースのアクセス許可を管理できます。Customers can manage database permissions by using external (Azure AD) groups.
  • 統合 Windows 認証や、Azure Active Directory でサポートされる他の認証形式を有効にすることで、パスワードが保存されないようにすることができます。It can eliminate storing passwords by enabling integrated Windows authentication and other forms of authentication supported by Azure Active Directory.
  • 包含データベース ユーザーを使用して、データベース レベルで ID を認証します。It uses contained database users to authenticate identities at the database level.
  • SQL Database に接続するアプリケーション向けにトークンベース認証をサポートしています。It supports token-based authentication for applications that connect to SQL Database.
  • ADFS (ドメイン フェデレーション) またはドメインを同期しないローカル Azure Active Directory インスタンスのネイティブ ユーザー/パスワード認証をサポートします。It supports AD FS (domain federation) or native user/password authentication for a local Azure Active Directory instance without domain synchronization.
  • Azure AD 認証は、Multi-Factor Authentication を含む Active Directory ユニバーサル認証を使用する SQL Server Management Studio からの接続をサポートします。Azure AD supports connections from SQL Server Management Studio that use Active Directory Universal Authentication, which includes Multi-Factor Authentication. Multi-Factor Authentication には、電話、テキスト メッセージ、スマート カードと PIN、モバイル アプリ通知など、各種確認オプションによる強力な認証が用意されています。Multi-Factor Authentication provides strong authentication with a range of verification options—phone call, text message, smart cards with PIN, or mobile app notification. 詳細については、「 SQL Database と SQL Data Warehouse での Azure AD Multi-Factor Authentication のための SSMS のサポート」を参照してください。For more information, see SSMS support for Azure AD Multi-Factor Authentication with SQL Database and SQL Data Warehouse.

構成の手順には、Azure AD 認証を構成して使用する次の手順が含まれます。The configuration steps include the following procedures to configure and use Azure AD authentication:

  • Azure AD を作成して設定します。Create and populate Azure AD.
  • 省略可能: Active Directory インスタンスを関連付けるか、現在 Azure サブスクリプションに関連付けられている Active Directory インスタンスを変更します。Optional: Associate or change the Active Directory instance that’s currently associated with your Azure subscription.
  • Azure SQL Database または Azure SQL Data Warehouse の Azure Active Directory 管理者を作成します。Create an Azure Active Directory administrator for Azure SQL Database or Azure SQL Data Warehouse.
  • クライアント コンピューターを構成します。Configure your client computers.
  • Azure AD の ID にマップされている包含データベース ユーザーをデータベースに作成します。Create contained database users in your database mapped to Azure AD identities.
  • Azure AD の ID を使用してデータベースに接続します。Connect to your database by using Azure AD identities.

詳細については、「Use Azure Active Directory Authentication for authentication with SQL Database, Managed Instance, or SQL Data Warehouse (SQL Database、マネージド インスタンス、または SQL Data Warehouse での認証に Azure Active Directory Authentication を使用する)」をご覧ください。You can find detailed information in Use Azure Active Directory authentication for authentication with SQL Database, Managed Instance, or SQL Data Warehouse.

暗号化と行レベルのセキュリティを使用してデータを保護するProtect your data by using encryption and row-level security

Azure SQL Database の Transparent Data Encryption は、ディスク上のデータを保護し、ハードウェアへの不正アクセスから保護できます。Azure SQL Database transparent data encryption helps protect data on disk and protects against unauthorized access to hardware. データベース、関連付けられているバックアップ、保管されているトランザクション ログ ファイルの暗号化と暗号化解除をリアルタイムで実行することにより、アプリケーションに変更を加えずに暗号化を行うことができます。It performs real-time encryption and decryption of the database, associated backups, and transaction log files at rest without requiring changes to the application. Transparent Data Encryption は、データベース暗号化キーと呼ばれる対称キーを使用してデータベース全体のストレージを暗号化します。Transparent data encryption encrypts the storage of an entire database by using a symmetric key called the database encryption key.

ストレージ全体を暗号化している場合でも、データベース自体も暗号化することが重要です。Even when the entire storage is encrypted, it’s important to also encrypt the database itself. これは、多層防御型のデータ保護手法の 1 つです。This is an implementation of the defense-in-depth approach for data protection. Azure SQL Database を使用していて、クレジット カードや社会保障番号などの機密データを保護する必要がある場合、FIPS 140-2 検証済み 256 ビット AES 暗号化を使ってデータベースを暗号化できます。If you’re using Azure SQL Database and want to protect sensitive data (such as credit card or social security numbers), you can encrypt databases with FIPS 140-2 validated 256-bit AES encryption. この暗号化は、さまざまな業界標準 (HIPAA、PCI など) の要件を満たしています。This encryption meets the requirements of many industry standards (for example, HIPAA and PCI).

Transparent Data Encryption を使用してデータベースを暗号化するときには、バッファー プール拡張機能 (BPE) に関連するファイルは暗号化されません。Files related to buffer pool extension (BPE) are not encrypted when you encrypt a database by using transparent data encryption. BPE 関連ファイルについては、BitLocker暗号化ファイル システム (EFS) などのファイル システム レベルの暗号化ツールを使用する必要があります。You must use file-system-level encryption tools like BitLocker or the Encrypting File System (EFS) for BPE-related files.

セキュリティ管理者やデータベース管理者などの特権を持つユーザーは、Transparent Data Encryption で暗号化されたデータベースのデータにもアクセスできるため、次の推奨事項にも従う必要があります。Because an authorized user like a security administrator or a database administrator can access the data even if the database is encrypted with transparent data encryption, you should also follow these recommendations:

  • データベース レベルでの SQL Server 認証を有効にします。Enable SQL Server authentication at the database level.
  • RBAC ロールを使用して Azure AD Authentication を使用します。Use Azure AD authentication by using RBAC roles.
  • ユーザーとアプリケーションは、別々のアカウントを使って認証する必要があります。Make sure that users and applications use separate accounts to authenticate. そうすることで、ユーザーとアプリケーションに付与されるアクセス許可を制限し、悪意のあるアクティビティのリスクを減らすことができます。This way, you can limit the permissions granted to users and applications and reduce the risk of malicious activity.
  • 固定データベース ロール (db_datareader、db_datawriter など) を使用してデータベース レベルのセキュリティを実装します。Implement database-level security by using fixed database roles (such as db_datareader or db_datawriter). または、アプリケーションにカスタム ロールを作成し、選択したデータベース オブジェクトに明示的なアクセス許可を付与できます。Or you can create custom roles for your application to grant explicit permissions to selected database objects.

その他の方法でデータをセキュリティ保護するには、次を検討してください。For other ways to secure your data, consider:

  • セルレベルの暗号化 により、暗号化キーが異なるデータの特定の列またはセルを暗号化できます。Cell-level encryption to encrypt specific columns or even cells of data with different encryption keys.
  • Always Encrypted を使用すると、クライアントはクライアント アプリケーション内の機密データを暗号化することができます。暗号化キーがデータベース エンジン (SQL Database や SQL Server) に公開されることはありません。Always Encrypted, which allows clients to encrypt sensitive data inside client applications and never reveal the encryption keys to the Database Engine (SQL Database or SQL Server). これにより、Always Encrypted では、データの所有者 (データを表示できるユーザー) とデータの管理者 (アクセス権は付与しないユーザー) を分離できます。As a result, Always Encrypted provides a separation between those who own the data (and can view it) and those who manage the data (but should have no access).
  • 行レベルのセキュリティを使用すると、クエリを実行しているユーザーの特性に基づいて、データベース テーブル内の行へのアクセスを制御できます。Row-Level Security, which enables customers to control access to rows in a database table based on the characteristics of the user who is executing a query. (例の特性は、グループ メンバーシップと実行コンテキストです)。(Example characteristics are group membership and execution context.)

データベース レベルの暗号化を使用しない場合、SQL データベース内にあるデータを損なうような攻撃を受けやすくなる可能性があります。Organizations that are not using database-level encryption might be more susceptible to attacks that compromise data located in SQL databases.

SQL Database の Transparent Data Encryption の詳細については、「Azure SQL Database での Transparent Data Encryption」を参照してください。You can learn more about SQL Database transparent data encryption by reading the article Transparent Data Encryption with Azure SQL Database.

データベース監査を有効にするEnable database auditing

SQL Server データベース エンジンまたは個々のデータベースのインスタンスを監査するには、イベントを追跡し、ログに記録します。Auditing an instance of the SQL Server Database Engine or an individual database involves tracking and logging events. SQL Server では、サーバー レベルのイベントの仕様とデータベース レベルのイベントの仕様が含まれている監査を作成できます。For SQL Server, you can create audits that contain specifications for server-level events and specifications for database-level events. 監査イベントは、イベント ログまたは監査ファイルへ書き込むことができます。Audited events can be written to the event logs or to audit files.

インストールに対する政府や標準の要件に応じて、SQL Server には複数のレベルの監査があります。There are several levels of auditing for SQL Server, depending on government or standards requirements for your installation. SQL Server 監査では、さまざまなサーバーおよびデータベース オブジェクトで監査を有効化、格納、表示するためのツールとプロセスが提供されます。SQL Server auditing provides tools and processes for enabling, storing, and viewing audits on various server and database objects.

Azure SQL Database 監査 では、データベース イベントを追跡し、Azure Storage アカウントの監査ログにイベントを書き込みます。Azure SQL Database auditing tracks database events and writes them to an audit log in your Azure storage account.

監査により、規定遵守の維持、データベース活動の理解、およびビジネス上の懸念やセキュリティ違反を示す矛盾や異常に対する洞察が容易になります。Auditing can help you maintain regulatory compliance, understand database activity, and find discrepancies and anomalies that might point to business concerns or security violations. 監査は、標準準拠を促進しますが、準拠を保証するものではありません。Auditing facilitates adherence to compliance standards but doesn't guarantee compliance.

データベースの監査とこれを有効にする方法の詳細については、「SQL Database 監査の使用」を参照してください。To learn more about database auditing and how to enable it, see Get started with SQL database auditing.

データベースの脅威の検出を有効にするEnable database threat detection

脅威の防止は検出だけではありません。Threat protection goes beyond detection. データベースの脅威の防止は次のとおりです。Database threat protection includes:

  • データを保護できるように、最も機密性の高いデータを検出して分類します。Discovering and classifying your most sensitive data so you can protect your data.
  • データベースを保護できるように、データベースにセキュリティで保護された構成を実装します。Implementing secure configurations on your database so you can protect your database.
  • 潜在的な脅威が発生すると同時に検出することによって、迅速に対応して修復できるようにします。Detecting and responding to potential threats as they occur so you can quickly respond and remediate.

ベスト プラクティス: データベースの機密データを検出、分類、およびラベル付けする。Best practice: Discover, classify, and label the sensitive data in your databases.
詳細: Azure SQL Database の [Data Discovery and Classification] (データの検出と分類) を有効にすることによって、SQL Database のデータを分類します。Detail: Classify the data in your SQL database by enabling Data Discovery and Classification in Azure SQL Database. Azure ダッシュ ボードで機密データへのアクセスを監視することも、レポートをダウンロードすることもできます。You can monitor access to your sensitive data in the Azure dashboard or download reports.

ベスト プラクティス: データベースのセキュリティを予防的に向上できるように、データベースの脆弱性を追跡する。Best practice: Track database vulnerabilities so you can proactively improve your database security.
詳細: Azure SQL Database の脆弱性評価サービスを使用して、データベースの潜在的な脆弱性をスキャンします。Detail: Use the Azure SQL Database Vulnerability Assessment service, which scans for potential database vulnerabilities. このサービスでは、構成の不備、過剰な権限、保護されていない機密データなどセキュリティの脆弱性にフラグを設定し、ベスト プラクティスからの逸脱を示す、ルールのナレッジ ベースが利用されます。The service employs a knowledge base of rules that flag security vulnerabilities and show deviations from best practices, such as misconfigurations, excessive permissions, and unprotected sensitive data.

ルールは Microsoft のベスト プラクティスに基づき、データベースとその貴重なデータに最も大きなリスクとなるセキュリティの問題に注目します。The rules are based on Microsoft best practices and focus on the security issues that present the biggest risks to your database and its valuable data. これらのルールは、データベース レベルの問題およびサーバーのファイアウォール設定やサーバー レベルの権限など、サーバー レベルのセキュリティ問題もカバーしたものとなっています。They cover both database-level issues and server-level security issues, like server firewall settings and server-level permissions. また、これらの規則は、規制機関によるコンプライアンス基準を満たすための多くの要件も表しています。These rules also represent many of the requirements from regulatory bodies to meet their compliance standards.

ベスト プラクティス: 脅威の検出を有効にする。Best practice: Enable threat detection.
詳細: Azure SQL Database の脅威の検出を有効にし、セキュリティ アラートと、脅威を調査して軽減する方法の推奨事項を取得します。Detail: Enable Azure SQL Database Threat Detection to get security alerts and recommendations on how to investigate and mitigate threats. 不審なデータベース アクティビティ、潜在的な脆弱性、SQL インジェクション攻撃や、異常なデータベース アクセスやクエリのパターンが見つかった場合に、アラートを受信します。You get alerts about suspicious database activities, potential vulnerabilities, and SQL injection attacks, as well as anomalous database access and query patterns.

Advanced Threat Protection は、高度な SQL セキュリティ機能のための統合パッケージです。Advanced Threat Protection is a unified package for advanced SQL security capabilities. これには前に説明したサービス (データの検出と分類、脆弱性の評価、脅威の検出) が含まれています。It includes the services mentioned earlier: Data Discovery and Classification, Vulnerability Assessment, and Threat Detection. これらの機能を 1 つの場所で有効にして管理できます。It provides a single location for enabling and managing these capabilities.

これらの機能を有効にすると次のことが可能になります。Enabling these capabilities helps you:

  • データのプライバシー基準および規制のコンプライアンス要件を満たします。Meet data privacy standards and regulatory compliance requirements.
  • データベースへのアクセスを制御し、セキュリティを強化します。Control access to your databases and harden their security.
  • 変更の追跡が困難な動的データベース環境を監視します。Monitor a dynamic database environment where changes are hard to track.
  • 潜在的な脅威を検出し、これに対応します。Detect and respond to potential threats.

さらに、脅威の検出は、アラートを、すべての Azure リソースのセキュリティ状態の一元的に表示するための Azure Security Center と統合します。In addition, Threat Detection integrates alerts with Azure Security Center for a central view of the security state of all of your Azure resources.

次のステップNext steps

Azure を使用してクラウド ソリューションを設計、デプロイ、管理するときに使用するセキュリティのベスト プラクティスの詳細については、「Azure セキュリティのベスト プラクティスとパターン」を参照してください。See Azure security best practices and patterns for more security best practices to use when you’re designing, deploying, and managing your cloud solutions by using Azure.

Azure のセキュリティとそれに関連する Microsoft サービスの一般情報については、以下のリソースを参照してください。The following resources are available to provide more general information about Azure security and related Microsoft services: