行レベルセキュリティが Microsoft Azure SQL Data Warehouse でサポート対象となる

2018年11月7日 に投稿済み

Principal Program Manager, Azure SQL Data Warehouse

本日、Microsoft Azure SQL Data Warehouse で行レベルセキュリティ (RSL) が一般提供されたことをお知らせしています。これは、機密データのセキュリティを管理するための追加機能です。Azure SQL Data Warehouse は高速で、柔軟性が高く、セキュリティで保護されたクラウド データ ウェアハウスです。ペタバイト単位のデータに関して複雑なクエリを高速に実行できるように調整されています。

データをクラウドに移行する際、お客様やパートナーの信頼を得るには、データ資産をセキュリティで保護することが不可欠です。RSL を導入することにより、テーブル内でアクセスできる行とアクセスできる人など、行に対するアクセスを制御するためのセキュリティ ポリシーを実装できます。RLS を使用すると、ご使用のデータ ウェアハウスを再設計しないでも、このようなきめ細やかなアクセス制御が可能になります。アクセス制限のロジックは、別のアプリケーションのデータから離れた場所ではなく、データベース層そのものに配置されているため、全般的なセキュリティ モデルが簡素化されます。また、RLS により、アクセス制御を管理するために行をフィルター処理するビューを導入する必要がなくなります。さらに、RLS では SQL 認証と Azure Active Directory (AAD) 認証の両方がサポートされています。

RLS を今すぐ活用できるシナリオの一部を以下に記します。

  • 医療提供者は、看護士に自分の患者のデータ行のみの表示を許可するセキュリティ ポリシーを適用できます。
  • 金融会社は、社員の部門や社内での役職のいずれかに基づいて金融データ行へのアクセスを厳密に制限できます。
  • マルチテナント アプリケーションでは、強制的に各テナントのデータ行をその他すべてのテナント行から論理的に分離できます。

RLS ダイアグラム

RLS は述語ベースのアクセス制御で、セキュリティ述語をテーブル上のすべてのクエリに自動的に適用することによって動作します。述語により、アクセスできる行とアクセスできるユーザーが決まります。たとえば、簡単な述語の場合は “WHERE SalesRep = SYSTEM_USER,” などとなり、複雑な述語の場合には他のテーブルの情報を参照するための JOIN が含まれる可能性があります。

セキュリティ述語には次の 2 種類があります。

  • フィルター述語は、述語を満たさない行を除外する SELECT、UPDATE、DELETE の各操作を通知なしにフィルター処理します。
  • ブロック述語は、述語を満たさない行を除外する INSERT、UPDATE、DELETE の各操作を明示的に禁止します。

今回のリリースでは、Azure SQL Data Warehouse はフィルター述語のみをサポートし、ブロック述語のサポートは近日リリースされる予定です。また、このリリースの RLS は PolyBase を使用して作成された外部テーブルはサポートしていません。

テーブルにセキュリティ述語を追加するには、最初に、アクセス基準を定義するインライン テーブル値関数が必要です。その後、この関数を使用して、任意のテーブルにフィルター述語を追加するセキュリティ ポリシーを作成します。販売担当者が自分に割り当てられていない顧客のテーブル行にアクセスできないようにする簡単な例を以下に示します。

CREATE SCHEMA security;

CREATE FUNCTION security.customerPredicate(@SalesRepName AS sysname)
RETURNS TABLE
    WITH SCHEMABINDING
AS
    RETURN SELECT 1 AS accessResult
WHERE @SalesRepName = SYSTEM_USER OR SYSTEM_USER = 'Manager';
go

CREATE SECURITY POLICY security.customerAccessPolicy
ADD FILTER PREDICATE security.customerPredicate(SalesRepName) ON dbo.Customers
WITH (STATE = ON);
go

この機能は、追加料金なしですべての Azure リージョンで利用できるようになりました。既にいくつかのリージョンでロールアウトが完了し、2 週間以内に世界中でのデプロイを完了させることを目標にしています。Azure SQL Data Warehouse は、今後もセキュリティ、コンプライアンス、プライバシー、監査の点で鋭意努力してゆきます。

次の手順