Azure Synapse Analytics セキュリティ制御を使用する

完了

データ ウェアハウスのセキュリティは、IT 管理の基本的な部分であることに加えて、多くのコンプライアンス認定において重要かつ必須のコンポーネントです。 Azure Synapse Analytics サービスを使用すれば、さまざまなレイヤー (プラットフォーム セキュリティ、インフラストラクチャ セキュリティ、ネットワーク セキュリティ、データ セキュリティ) を介してセキュリティ制御を行うことができます。 データのセキュリティ制御は、保存データおよび転送中のデータの両方に利用できます。

認証制御と承認制御によって、インフラストラクチャをセキュリティで保護できます。 データ ウェアハウスのコンテキストにおける認証とは、ユーザーの ID を確認する方法です。 承認とは、データ ウェアハウス内のデータおよびオブジェクトへのアクセスを制御する方法です。 認証での確認後に、承認の確認が実行されます。

データ ウェアハウスのサンプルを作成する

Azure Synapse Analytics のセキュリティ機能を実証するために、Azure にあるサンプル データベースを使用して Azure Synapse Analytics のインスタンスを作成します。 Azure portal から以下のオプションを使用して、サーバーとデータベースを作成します。

Screenshot of creating a Azure Synapse Analytics data warehouse instance by using the portal.

ポータルを使用してファイアウォール アクセス規則を設定する

Azure Synapse Analytics には、ファイアウォール規則を使用してデータ ウェアハウス インフラストラクチャへのアクセスを制限するコントロールが用意されています。 ファイアウォール規則は、データ ウェアハウスの資産への不正アクセスに対する第一の防御レベルです。 ファイアウォール規則では、データ ウェアハウスの資産にアクセスできる IP または IP 範囲を指定し、その許可リストまたは許可範囲以外の IP からの接続はすべて拒否します。 ファイアウォール規則は、サーバー レベルで適用されます。

ファイアウォール規則を指定する手順は次のとおりです。

  1. ブラウザーで、Azure portal に移動します。

  2. 左側のウィンドウで、[SQL データベース] を選択します。

  3. 前のセクションで作成したデータ ウェアハウスを選択します。

  4. 右側のペインで [サーバー名] を選択します。

    Screenshot of selecting a server name.

  5. [ファイアウォール設定の表示] を選択します。

  6. [規則名][開始 IP][終了 IP] に名前を選択します。

    Screenshot of selecting rule name, start IP, and end IP.

SQL Server Management Studio を使用して Azure Synapse Analytics データ ウェアハウス ログインを作成する

Azure Synapse Analytics では、接続しようとしているユーザーの ID を確認するために次の 2 種類の認証をサポートしています。SQL 認証と Microsoft Entra 認証です。

SQL 認証では、ユーザーはユーザー名とパスワードの組み合わせを使用してデータ ウェアハウスに接続します。 Azure portal には、SQL 認証を構成する機能はありません。 SQL 認証を構成する手順は次のとおりです。

  1. 前提条件としてインストールした SQL Server Management Studio を開き、データ ウェアハウスに接続します。 Azure portal からデータ ウェアハウスに移動してサーバー名を取得し、データ ウェアハウスの作成時に指定したユーザー名とパスワードを使用します。

    Screenshot of opening SQL Server Management Studio.

  2. [接続] を選択します。これにより、データ ウェアハウスにログインされます。

  3. 左側のウィンドウの [セキュリティ] の下にある [ログイン] を右クリックし、[新しいログイン] を選択します。

    Screenshot of creating a new login.

  4. ログインを作成するためのコマンドを含むクエリ ウィンドウが表示されたら、必要に応じてユーザー名とパスワードを変更して、[実行] を選択します。

    Screenshot of executing a new query.

  5. 左側のウィンドウで [セキュリティ] の下にある [ログイン] を右クリックして、[更新] を選択します。

  6. 左側のウィンドウの [ログイン] の下に新しく作成されたログインが表示されます。

    Screenshot of executing a login query.

Microsoft Entra ID は、すべての Microsoft オンライン サービスおよびクラウド サービスの ID を一元的に管理する場所です。 このレッスンでは、Microsoft Entra 認証については扱いません。 これには、大まかに次の 4 つの手順があります。

  1. ご自分の組織の Microsoft Entra インスタンスを作成し設定します。
  2. 新しく作成した Microsoft Entra インスタンスをご利用の Azure サブスクリプションに関連付けます。
  3. データ ウェアハウスの Microsoft Entra 管理者を作成します。
  4. データベース ユーザーを Microsoft Entra ID にマッピングします。

SQL Server Management Studio を使用して新しい Azure Synapse Analytics データ ウェアハウス ユーザーを作成する

ログインを作成すると、データ ウェアハウス サーバーにはアクセスできますが、そのデータベースまたはデータベース オブジェクトにはアクセスできません。 特定のデータベースおよびオブジェクトにログインできるようにするには、ユーザーを作成してロールを割り当てる必要があります。

ロールでは、データベースに対するさまざまなレベルでのユーザー アクセスを許可します。 このセキュリティ手段は、ロール ベース セキュリティと呼ばれています。 データ ウェアハウス内のデータベースへのユーザー アクセスを制御するには、いくつかの組み込みのロールを使用するか、作成したカスタム ロールを使用します。 この例では、作成するユーザーに対して組み込みの db_datareader ロールを割り当てます。

  1. SQL Server Management Studio を開き、データ ウェアハウスに接続します。 Azure portal からデータ ウェアハウスに移動してサーバー名を取得し、データ ウェアハウスの作成時に指定したユーザー名とパスワードを使用します。

    Screenshot of opening SQL Server Management Studio for SQL Data Warehouse.

  2. [接続] を選択します。これにより、SQL データ ウェアハウスにログインされます。

  3. 左側のウィンドウでデータベースを展開して、前提条件で作成した DemoDW を展開します。

  4. [セキュリティ][ユーザー] の順に展開します。

  5. [ユーザー] を右クリックし、[新しいユーザー] を選択します。

    Screenshot of creating a new user.

  6. ユーザーを作成するためのコマンドを含むクエリ ウィンドウが表示されたら、次のことを行います。

    a. ユーザー名パラメーターを一意のユーザー名に変更します。

    b. 前のセクションで作成したログインを、クエリ ウィンドウの 2 番目のコマンドのログイン パラメーターとして変更します。

    c. 最初のパラメーターとして db_datareader を入力します。2 番目のパラメーターとしては最初の手順で選択したデータベース ユーザーを入力します。

    d. [実行] を選択します。

  7. 左側のウィンドウで [セキュリティ] の下にある [ユーザー] を右クリックして、[更新] を選択します。

    左側のウィンドウの [ユーザー] の下に新しく作成されたユーザーが表示されます。

    Screenshot that shows the newly created user.

ポータルを使用してデータ ウェアハウス上でデータの暗号化を有効にする

保存データの暗号化

保存データの暗号化を行うと、ご利用のデータ ウェアハウス内のデータを保護して、厳しいコンプライアンス要件を満たすことができます。 Azure Synapse Analytics には、接続元のクライアント アプリケーションに影響を与えない透過的な保存データ暗号化機能が用意されています。 保存データの透過的な暗号化を有効にするには、次の手順を行います。

  1. Azure portal で作成したデータベースに移動します。
  2. オプション ウィンドウの [セキュリティ] セクションで、[透過的なデータ暗号化] を選択します。
  3. [オン] を選択します。
  4. [保存] を選択します。

Screenshot of configuring encryption.

ご利用のアプリケーションで転送中のデータを暗号化する

転送中のデータの暗号化は、中間者攻撃を防ぐための手段です。 転送中のデータを暗号化するには、ご利用のクライアント アプリケーションで接続文字列内に encrypt=true を次のように指定します。 これにより、ご使用のクライアント アプリケーションと SQL データ ウェアハウスとの間で送信されるすべてのデータが SSL で暗号化されます。

String connectionURL =   
    "jdbc:sqlserver://<your_azure_sql_datawarehouse_fqdn>:1433;" +  
     "databaseName=DemoDW;username=your_username;password=your_password " +  
     "encrypt=true ";

SQL Server Management Studio を使用して詳細なセキュリティ制御でデータ アクセスを制限する

特定のシナリオでは、プライバシーおよびコンプライアンスのために詳細なセキュリティ制御をする必要があります。 会社内のすべての従業員のデータをホストするデータ ウェアハウスで、テーブル内の個々の列または行へのアクセスを、ロールまたは職務の特定の管理グループに制限するなどです。 Azure Synapse Analytics では、列レベルのセキュリティおよび行レベルのセキュリティを使用して詳細なセキュリティ制御を提供しています。 このセクションでは、これらの制御を Azure Synapse Analytics に格納されているデータに適用する方法について説明します。

列レベルのセキュリティを使用してデータへの読み取りアクセス許可する

特定のユーザーにテーブルの特定の列にのみアクセスを許可する場合、次の手順を使用します。

  1. SQL Server Management Studio を開き、データ ウェアハウスに接続します。 Azure portal からデータ ウェアハウスに移動してサーバー名を取得し、データ ウェアハウスの作成時に指定したユーザー名とパスワードを使用します。

    Screenshot of opening SQL Server Management Studio for SQL Data Warehouse.

  2. [接続] を選択します。これにより、SQL データ ウェアハウスにログインされます。

  3. DemoDW データベースに移動して、[テーブル] ノードを展開します。 dbo.DimEmployee テーブルが表示されます。これは、前に作成した demodw_user という名前のユーザーのアクセスを制限するテーブルです。

    Screenshot of the dbo.DimEmployee table.

  4. [ファイル] メニューの [新規]>[クエリを現在の接続で実行] を選択します。

    Screenshot of creating a new query with the current connection.

  5. クエリ ウィンドウで、次のコマンドを入力し、[実行] ボタンを選択します。

    GRANT SELECT ON dbo.DimEmployee (FirstName, MiddleName, LastName, Title) TO demodw_user;
    

    Command to create a query.

ユーザー demodw_user は、現在テーブル内のアクセスが許可されている 4 つの列にのみアクセスできます。 その他の列は、そのユーザーには表示されません。

行レベルのセキュリティを使用してデータへのアクセスを制限する

Azure Synapse Analytics には、述語ベースの行レベル セキュリティが用意されています。 述語を満たしていないテーブル上の行は、クエリからサイレント除外されます。 Azure Synapse Analytics 内で行レベルのセキュリティを適用する処理は、次の 2 段階のプロセスで行われます。

  1. アクセス条件を定義するテーブル値関数の作成
  2. 行レベルのアクセスを制限する必要があるテーブルに対して前の手順で作成したフィルター述語を追加するセキュリティ ポリシーの作成

次の手順を実行し、DemoDW データベース内の dbo.DimEmployee テーブルに対して行レベル セキュリティを適用します。

  1. SQL Server Management Studio を開き、データ ウェアハウスに接続します。 Azure portal からデータ ウェアハウスに移動してサーバー名を取得し、データ ウェアハウスの作成時に指定したユーザー名とパスワードを使用します。

    Screenshot of opening SQL Server Management Studio for SQL Data Warehouse.

  2. [接続] を選択します。これにより、SQL データ ウェアハウスにログインされます。

  3. DemoDW データベースに移動して、[テーブル] ノードを展開します。 dbo.DimEmployee テーブルが表示されます。これは、前に作成した demodw_user という名前のユーザーのアクセスを制限するテーブルです。

    Screenshot of the dbo.DimEmployee table.

  4. [ファイル] メニューの [新規]>[クエリを現在の接続で実行] を選択します。

    Screenshot for creating a new query with the current connection.

  5. クエリ ウィンドウで、次のコマンドを入力し、[実行] ボタンを選択します。

    CREATE SCHEMA Security
    GO 
    
    CREATE FUNCTION Security.fn_rowlevel_predicate(@EmployeeLoginId AS sysname)  
        RETURNS TABLE  
    WITH SCHEMABINDING  
    AS  
        RETURN SELECT 1 AS fn_rowlevel_predicate_result
    WHERE @EmployeeLoginId = 'demodw_user'
    GO
    
    CREATE SECURITY POLICY EmployeeFilter
    ADD FILTER PREDICATE Security.fn_rowlevel_predicate(LoginId)
    ON dbo.DimEmployee
    WITH (STATE = ON)
    GO
    

ここで、DimEmployee テーブルの行にアクセスできるのは、demodw_user のみです。

Screenshot of the query result.