Azure SQL データベースのセキュリティ保護Secure your Azure SQL Database

SQL Database は、次の方法でデータを保護します。SQL Database secures your data by:

  • ファイアウォール規則を使用したデータベースへのアクセスの制限Limiting access to your database using firewall rules
  • ユーザーに ID の入力を求める認証メカニズムの使用Using authentication mechanisms that require their identity
  • ロールベースのメンバーシップとアクセス許可による、データに対する認可Authorization to data through role-based memberships and permissions,
  • 行レベルのセキュリティRow-level security
  • 動的データ マスクDynamic data masking

さらに、SQL Database は、高度な監視、監査、および脅威検出機能も備えています。SQL Database also has sophisticated monitoring, auditing, and threat detection.

いくつかの簡単な手順に従うだけで、悪意のあるユーザーや未承認のアクセスからデータベースを今まで以上に強力に保護できるようになります。You can improve the protection of your database against malicious users or unauthorized access with just a few simple steps. このチュートリアルで学習する内容は次のとおりです。In this tutorial you learn to:

  • Azure Portal でサーバーにサーバーレベルのファイアウォール規則を設定するSet up server-level firewall rules for your server in the Azure portal
  • SSMS を利用し、データベースにデータベースレベルのファイアウォール規則を設定するSet up database-level firewall rules for your database using SSMS
  • セキュリティで保護された接続文字列を使用してデータベースに接続するConnect to your database using a secure connection string
  • ユーザー アクセスを管理するManage user access
  • 暗号化でデータを保護するProtect your data with encryption
  • SQL Database の監査を有効にするEnable SQL Database auditing
  • SQL Database の脅威の検出を有効にするEnable SQL Database threat detection

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

前提条件Prerequisites

このチュートリアルを完了するには、以下のものが必要です。To complete this tutorial, make sure you have the following:

Azure Portal にログインするLog in to the Azure portal

Azure Portal にサインインします。Sign in to the Azure portal.

Azure Portal でサーバーレベルのファイアウォール規則を作成するCreate a server-level firewall rule in the Azure portal

SQL データベースは、ファイアウォールによって保護されます。SQL databases are protected by a firewall in Azure. 既定では、サーバーとサーバー内部のデータベースに対する接続は、他の Azure サービスからの接続を除き、すべて拒否されます。By default, all connections to the server and the databases inside the server are rejected except for connections from other Azure services. 詳細については、「Azure SQL Database のサーバーレベルとデータベースレベルのファイアウォール規則」を参照してください。For more information, see Azure SQL Database server-level and database-level firewall rules.

最も安全な構成は、[Azure サービスへのアクセスを許可] をオフにしておくことです。The most secure configuration is to set 'Allow access to Azure services' to OFF. Azure VM またはクラウド サービスからデータベースに接続する必要がある場合は、予約済み IP を作成し、予約済み IP アドレスだけにファイアウォール経由のアクセスを許可する必要があります。If you need to connect to the database from an Azure VM or cloud service, you should create a Reserved IP and allow only the reserved IP address access through the firewall.

サーバーが特定の IP アドレスからの接続を許可するように、次の手順に従って、SQL Database のサーバーレベルのファイアウォール規則を作成します。Follow these steps to create a SQL Database server-level firewall rule for your server to allow connections from a specific IP address.

注意

前のチュートリアルまたはクイックスタートのいずれかを利用して Azure でサンプル データベースを作成しているとき、それらのチュートリアルで利用した IP アドレスと同じアドレスを持つコンピューターでこのチュートリアルを実行している場合、サーバーレベルのファイアウォール規則が既に作成されているため、この手順を省略できます。If you have created a sample database in Azure using one of the previous tutorials or quickstarts and are performing this tutorial on a computer with the same IP address that it had when you walked through those tutorials, you can skip this step as you will have already created a server-level firewall rule.

  1. 左側のメニューで [SQL データベース] をクリックし、[SQL データベース] ページで、ファイアウォール規則を構成するデータベースをクリックします。Click SQL databases from the left-hand menu and click the database you would like to configure the firewall rule for on the SQL databases page. このデータベースの概要ページが開くと、完全修飾サーバー名 (mynewserver-20170313.database.windows.net など) や追加の構成オプションが表示されます。The overview page for your database opens, showing you the fully qualified server name (such as mynewserver-20170313.database.windows.net) and provides options for further configuration.

    サーバーのファイアウォール規則

  2. 前の画像に示されているように、ツール バーの [サーバー ファイアウォールの設定] をクリックします。Click Set server firewall on the toolbar as shown in the previous image. SQL Database サーバーの [ファイアウォール設定] ページが開きます。The Firewall settings page for the SQL Database server opens.

  3. ツール バーの [クライアント IP の追加] をクリックして、ポータルへの接続に使用されているコンピューターのパブリック IP アドレスを追加するか、ファイアウォール規則を手動で入力し、[保存] をクリックします。Click Add client IP on the toolbar to add the public IP address of the computer connected to the portal with or enter the firewall rule manually and then click Save.

    サーバーのファイアウォール規則の設定

  4. [OK] をクリックしてから、[X] をクリックして [ファイアウォール設定] ページを閉じます。Click OK and then click the X to close the Firewall settings page.

これで、指定した IP アドレスまたは IP アドレスの範囲を使用して、サーバー内の任意のデータベースに接続できるようになりました。You can now connect to any database in the server with the specified IP address or IP address range.

注意

SQL Database の通信は、ポート 1433 上で行われます。SQL Database communicates over port 1433. 企業ネットワーク内から接続しようとしても、ポート 1433 での送信トラフィックがネットワークのファイアウォールで禁止されている場合があります。If you are trying to connect from within a corporate network, outbound traffic over port 1433 may not be allowed by your network's firewall. その場合、会社の IT 部門によってポート 1433 が開放されない限り、Azure SQL Database サーバーに接続することはできません。If so, you will not be able to connect to your Azure SQL Database server unless your IT department opens port 1433.

SSMS を使用してデータベースレベルのファイアウォール規則を作成するCreate a database-level firewall rule using SSMS

データベースレベルのファイアウォール規則では、同じ論理サーバー内の異なるデータベースに異なるファイアウォール設定を作成したり、移動可能なファイアウォール規則を作成したりできます。移動可能なファイアウォール規則は、フェールオーバーの際、SQL サーバーに残らず、データベースの後を付いて移動します。Database-level firewall rules enable you to create different firewall settings for different databases within the same logical server and to create firewall rules that are portable - meaning that they follow the database during a failover rather than being stored on the SQL server. データベースレベルのファイアウォール規則の構成は、Transact-SQL ステートメントを使用して、最初のサーバーレベルのファイアウォール規則を構成した後にのみ行うことができます。Database-level firewall rules can only be configured by using Transact-SQL statements and only after you have configured the first server-level firewall rule. 詳細については、「Azure SQL Database のサーバーレベルとデータベースレベルのファイアウォール規則」を参照してください。For more information, see Azure SQL Database server-level and database-level firewall rules.

データベース固有のファイアウォール規則を作成するには、次の手順に従います。Follows these steps to create a database-specific firewall rule.

  1. SQL Server Management Studio などを使用して、データベースに接続します。Connect to your database, for example using SQL Server Management Studio.

  2. オブジェクト エクスプローラーで、ファイアウォール規則を追加するデータベースを右クリックし、[新しいクエリ] をクリックします。In Object Explorer, right-click on the database you want to add a firewall rule for and click New Query. データベースに接続された空のクエリ ウィンドウが開きます。A blank query window opens that is connected to your database.

  3. クエリ ウィンドウで、IP アドレスをパブリック IP アドレスに変更し、次のクエリを実行します。In the query window, modify the IP address to your public IP address and then execute the following query:

    EXECUTE sp_set_database_firewall_rule N'Example DB Rule','0.0.0.4','0.0.0.4';
    
  4. ツール バーの [実行] をクリックして、ファイアウォール規則を作成します。On the toolbar, click Execute to create the firewall rule.

安全な接続文字列を利用し、データベースにアプリケーションを接続する方法を表示するView how to connect an application to your database using a secure connection string

クライアント アプリケーションと SQL Database の間に暗号化された安全な接続を確立するには、接続文字列を次のように構成する必要があります。To ensure a secure, encrypted connection between a client application and SQL Database, the connection string has to be configured to:

  • 暗号化接続を要求するRequest an encrypted connection, and
  • サーバー証明書を信頼しないTo not trust the server certificate.

そうすることで、トランスポート層セキュリティ (TLS) を使用して接続が確立され、中間者攻撃のリスクが軽減されます。This establishes a connection using Transport Layer Security (TLS) and reduces the risk of man-in-the-middle attacks. 次のスクリーンショットで ADO.net の場合が示されているように、サポートされているクライアント ドライバー用の SQL Database の正しく構成されている接続文字列を Azure Portal から取得できます。You can obtain correctly configured connection strings for your SQL Database for supported client drivers from the Azure portal as shown for ADO.net in this screenshot. TLS と接続の詳細については、TLS に関する考慮事項に関するセクションを参照してください。For information about TLS and connectivity, see TLS considerations.

  1. 左側のメニューの [SQL データベース] を選択し、[SQL データベース] ページで目的のデータベースをクリックします。Select SQL databases from the left-hand menu, and click your database on the SQL databases page.

  2. データベースの [概要] ページで、[データベース接続文字列の表示] をクリックします。On the Overview page for your database, click Show database connection strings.

  3. 完全な ADO.NET 接続文字列を確認します。Review the complete ADO.NET connection string.

    ADO.NET の接続文字列

データベース ユーザーの作成Creating database users

ユーザーを作成する前に、まず、Azure SQL Database でサポートされている 2 種類の認証のうちいずれかを選択する必要があります。Before creating any users, you must first choose from one of two authentication types supported by Azure SQL Database:

SQL 認証。論理サーバー内の特定のデータベースのコンテキストでのみ有効であるログインとユーザーのユーザー名とパスワードを使用します。SQL Authentication, which uses username and password for logins and users that are valid only in the context of a specific database within a logical server.

Azure Active Directory 認証。Azure Active Directory によって管理されているユーザー ID を使用します。Azure Active Directory Authentication, which uses identities managed by Azure Active Directory.

SQL Database に対する認証で Azure Active Directory を使用する場合は、作業を続行する前に、設定済みの Azure Active Directory が存在する必要があります。If you want to use Azure Active Directory to authenticate against SQL Database, a populated Azure Active Directory must exist before you can proceed.

SQL 認証を使用するユーザーを作成するには、次の手順に従います。Follow these steps to create a user using SQL Authentication:

  1. SQL Server Management Studio などを使用して、サーバー管理者の資格情報でデータベースに接続します。Connect to your database, for example using SQL Server Management Studio using your server admin credentials.

  2. オブジェクト エクスプローラーで、新しいユーザーを追加するデータベースを右クリックし、[新しいクエリ] をクリックします。In Object Explorer, right-click on the database you want to add a new user on and click New Query. 選択したデータベースに接続されている空のクエリ ウィンドウが開きます。A blank query window opens that is connected to the selected database.

  3. クエリ ウィンドウに次のクエリを入力します。In the query window, enter the following query:

    CREATE USER ApplicationUser WITH PASSWORD = 'YourStrongPassword1';
    
  4. ツール バーの [実行] をクリックして、ユーザーを作成します。On the toolbar, click Execute to create the user.

  5. 既定では、ユーザーはデータベースに接続できますが、データを読み取ったり書き込んだりするアクセス許可は付与されていません。By default, the user can connect to the database, but has no permissions to read or write data. 新しく作成したユーザーにこれらのアクセス許可を付与するには、新しいクエリ ウィンドウで次の 2 つのコマンドを実行します。To grant these permissions to the newly created user, execute the following two commands in a new query window

    ALTER ROLE db_datareader ADD MEMBER ApplicationUser;
    ALTER ROLE db_datawriter ADD MEMBER ApplicationUser;
    

新しいユーザーの作成のような管理者タスクを実行する必要がない場合は、データベースに接続するために、これらの非管理者アカウントをデータベース レベルで作成することをお勧めします。It is best practice to create these non-administrator accounts at the database level to connect to your database unless you need to execute administrator tasks like creating new users. Azure Active Directory を使用して認証を行う方法については、Azure Active Directory のチュートリアルを参照してください。Please review the Azure Active Directory tutorial on how to authenticate using Azure Active Directory.

暗号化でデータを保護するProtect your data with encryption

Azure SQL Database の Transparent Data Encryption (TDE) では、保存データを自動的に暗号化します。暗号化されたデータベースにアクセスするアプリケーションを変更する必要はありません。Azure SQL Database transparent data encryption (TDE) automatically encrypts your data at rest, without requiring any changes to the application accessing the encrypted database. 新しく作成されたデータベースの場合、TDE は既定でオンです。For newly created databases, TDE is on by default. データベースの TDE を有効にするには、または TDE がオンになっていることを確認するには、次の手順を行います。To enable TDE for your database or to verify that TDE is on, follow these steps:

  1. 左側のメニューの [SQL データベース] を選択し、[SQL データベース] ページで目的のデータベースをクリックします。Select SQL databases from the left-hand menu, and click your database on the SQL databases page.

  2. [Transparent Data Encryption] をクリックして、TDE の構成ページを開きます。Click on Transparent data encryption to open the configuration page for TDE.

    Transparent Data Encryption

  3. 必要に応じて、[データの暗号化] をオンにし、[保存] をクリックします。If necessary, set Data encryption to ON and click Save.

暗号化プロセスは、バックグラウンドで開始されます。The encryption process starts in the background. SQL Server Management Studio を使用して SQL Database に接続し、sys.dm_database_encryption_keys ビューの encryption_state 列に対してクエリを実行することで、進行状況を監視できます。You can monitor the progress by connecting to SQL Database using SQL Server Management Studio and querying the encryption_state column of the sys.dm_database_encryption_keys view. 状態 3 は、データベースが暗号化されていることを示します。A state of 3 indicates that the database is encrypted.

必要に応じて、SQL Database の監査を有効にするEnable SQL Database auditing, if necessary

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 gain insight into discrepancies and anomalies that could indicate potential security violations. SQL データベースの既定の監査ポリシーを作成するには、次の手順に従います。Follow these steps to create a default auditing policy for your SQL database:

  1. 左側のメニューの [SQL データベース] を選択し、[SQL データベース] ページで目的のデータベースをクリックします。Select SQL databases from the left-hand menu, and click your database on the SQL databases page.

  2. [設定] ブレードで、[監査と脅威の検出] を選択します。In the Settings blade, select Auditing & Threat Detection. サーバーレベルの監査が無効になっており、このコンテキストでサーバーの監査設定を表示または変更する [サーバー設定を表示] リンクがあることをご確認ください。Notice that sever-level auditing is diabled and that there is a View server settings link that allows you to view or modify the server auditing settings from this context.

    監査ブレード

  3. サーバー レベルで指定されたものと異なる種類 (または場所) の監査を有効にする必要がある場合には、[監査] をオンにして、BLOB 監査タイプを選択します。If you prefer to enable an Audit type (or location?) different from the one specified at the server level, turn ON Auditing, and choose the Blob Auditing Type. サーバーの BLOB 監査が有効になっている場合、データベース構成監査とサーバー BLOB 監査が並行して存在します。If server Blob auditing is enabled, the database-configured audit will exist side-by-side with the server Blob audit.

    監査を有効化

  4. [容量の詳細] を選択して [監査ログの容量] ブレードを開きます。Select Storage Details to open the Audit Logs Storage Blade. ログを保存する Azure Storage アカウントと古いログを削除するタイミングを指定するリテンション期間を選択し、一番下にある [OK] をクリックします。Select the Azure storage account where logs will be saved, and the retention period, after which the old logs will be deleted, then click OK at the bottom.

    ヒント

    監査レポートのテンプレートを最大限活用するには、すべての監査済みデータベースに同じストレージ アカウントを使用してください。Use the same storage account for all audited databases to get the most out of the auditing reports templates.

  5. [Save] をクリックします。Click Save.

重要

監査対象イベントをカスタマイズする場合、PowerShell または REST API から実行できます。詳細については、「SQL データベースの監査」をご覧ください。If you want to customize the audited events, you can do this via PowerShell or REST API - see SQL database auditing for more information.

SQL Database の脅威の検出を有効にするEnable SQL Database threat detection

脅威の検出で提供される新しいセキュリティ階層は、異常なアクティビティに対するセキュリティ アラートを提供することによって、発生する可能性のある脅威をユーザーが検出して対応できるようにします。Threat Detection provides a new layer of security, which enables customers to detect and respond to potential threats as they occur by providing security alerts on anomalous activities. ユーザーは、SQL Database の監査を使って疑わしいイベントを調査し、データベース内のデータに対するアクセス、侵害、または悪用の試行による結果かどうかを判断できます。Users can explore the suspicious events using SQL Database Auditing to determine if they result from an attempt to access, breach or exploit data in the database. 脅威の検出を使用するとデータベースに対する潜在的な脅威に簡単に対処でき、セキュリティの専門家である必要や、高度なセキュリティ監視システムを管理する必要はありません。Threat Detection makes it simple to address potential threats to the database without the need to be a security expert or manage advanced security monitoring systems. たとえば、脅威の検出は、SQL インジェクションの可能性を示す特定の異常なデータベース アクティビティを検出します。For example, Threat Detection detects certain anomalous database activities indicating potential SQL injection attempts. SQL インジェクションはインターネットでの一般的な Web アプリケーションのセキュリティの問題の 1 つであり、データ駆動型アプリケーションの攻撃に使用されます。SQL injection is one of the common Web application security issues on the Internet, used to attack data-driven applications. 攻撃者は、アプリケーションの脆弱性を利用してアプリケーションの入力フィールドに悪意のある SQL ステートメントを挿入し、データベースのデータを侵害または変更します。Attackers take advantage of application vulnerabilities to inject malicious SQL statements into application entry fields, for breaching or modifying data in the database.

  1. 監視する SQL データベースの構成ブレードに移動します。Navigate to the configuration blade of the SQL database you want to monitor. [設定] ブレードで、[監査と脅威の検出] を選択します。In the Settings blade, select Auditing & Threat Detection.

    ナビゲーション ウィンドウ

  2. [監査と脅威の検出] 構成ブレードで、監査を [ON] にすると、脅威の検出の設定が表示されます。In the Auditing & Threat Detection configuration blade turn ON auditing, which will display the threat detection settings.

  3. 脅威の検出を [ON] にします。Turn ON threat detection.

  4. 異常なデータベース アクティビティが検出されたときにセキュリティ アラートを受け取る電子メールのリストを構成します。Configure the list of emails that will receive security alerts upon detection of anomalous database activities.

  5. [監査と脅威の検出] ブレードの [保存] をクリックして、新規または更新済みの監査と脅威の検出のポリシーを保存します。Click Save in the Auditing & Threat detection blade to save the new or updated auditing and threat detection policy.

    ナビゲーション ウィンドウ

    異常なデータベース アクティビティが検出されると、電子メールで通知を受け取ります。If anomalous database activities are detected, you will receive an email notification upon detection of anomalous database activities. 電子メールでは、異常なアクティビティの特徴、データベース名、サーバー名、イベントの時刻など、疑わしいセキュリティ イベントについての情報が提供されます。The email will provide information on the suspicious security event including the nature of the anomalous activities, database name, server name and the event time. さらに、データベースへの潜在的な脅威の考えられる原因および調査や緩和のための推奨されるアクションについての情報も提供されます。In addition, it will provide information on possible causes and recommended actions to investigate and mitigate the potential threat to the database. 以下の手順では、このような電子メールを受信した場合の対処について説明します。The next steps walk you through what to do should you receive such an email:

    脅威の検出の電子メール

  6. 電子メールの [Azure SQL 監査ログ] リンクをクリックすると、Azure Portal が起動され、疑わしいイベントの時刻前後の関連する監査レコードが表示されます。In the email, click on the Azure SQL Auditing Log link, which will launch the Azure portal and show the relevant auditing records around the time of the suspicious event.

    監査レコード

  7. 監査レコードをクリックすると、SQL ステートメント、エラーの理由、クライアントの IP など、疑わしいデータベース アクティビティについての詳細が表示されます。Click on the audit records to view more information on the suspicious database activities such as SQL statement, failure reason and client IP.

    レコードの詳細

  8. [監査レコード] ブレードの [Excel で開く] をクリックすると、あらかじめ構成されている Excel テンプレートが開き、疑わしいイベントの時刻前後の監査ログがインポートされて詳細な分析が実行されます。In the Auditing Records blade, click Open in Excel to open a pre-configured excel template to import and run deeper analysis of the audit log around the time of the suspicious event.

    注意

    Excel 2010 以降では、Power Query と高速結合の設定が必要です。In Excel 2010 or later, Power Query and the Fast Combine setting is required.

    Excel でレコードを開く

  9. [高速結合] の設定を構成するには、[POWER QUERY] リボン タブの [オプション] を選択して [オプション] ダイアログ ボックスを表示します。To configure the Fast Combine setting - In the POWER QUERY ribbon tab, select Options to display the Options dialog. [プライバシー] セクションを選択し、2 番目のオプション [プライバシー レベルを無視し、可能であればパフォーマンスを向上させる] をオンにします。Select the Privacy section and choose the second option - 'Ignore the Privacy Levels and potentially improve performance':

    Excel の高速結合

  10. SQL 監査ログをロードするには、[設定] タブのパラメーターが正しく設定されていることを確認してから、データのリボンを選択し、[すべて更新] ボタンをクリックします。To load SQL audit logs, ensure that the parameters in the settings tab are set correctly and then select the 'Data' ribbon and click the 'Refresh All' button.

    Excel のパラメーター

  11. [SQL 監査ログ] シートに結果が表示されます。このシートでは、検出された異常なアクティビティを詳細に分析し、アプリケーションでのセキュリティ イベントの影響を軽減できます。The results appear in the SQL Audit Logs sheet which enables you to run deeper analysis of the anomalous activities that were detected, and mitigate the impact of the security event in your application.

次の手順Next steps

このチュートリアルでは、いくつかの簡単な手順に従うだけで、悪意のあるユーザーや未承認のアクセスからデータベースを今まで以上に強力に保護する方法を学習しました。In this tutorial, you learned to improve the protection of your database against malicious users or unauthorized access with just a few simple steps. 以下の方法について学習しました。You learned how to:

  • サーバーまたはデータベースのファイアウォール規則を設定するSet up firewall rules for your server and or database
  • セキュリティで保護された接続文字列を使用してデータベースに接続するConnect to your database using a secure connection string
  • ユーザー アクセスを管理するManage user access
  • 暗号化でデータを保護するProtect your data with encryption
  • SQL Database の監査を有効にするEnable SQL Database auditing
  • SQL Database の脅威の検出を有効にするEnable SQL Database threat detection

次のチュートリアルに進み、geo 分散型データベースを実装する方法を学習してください。Advance to the next tutorial to learn how to implement a geo-distributed database.