[アップデート] Amazon Redshift で動的データマスキングのサポートがアナウンスされました!(プレビュー) #reinvent

ウィスキー、シガー、パイプをこよなく愛する大栗です。ラスベガスで AWS re:Invent 2022 に参加しています。

先程 Amazon Redshift で動的なデータマスキング機能が発表されたのでレポートします。

Amazon Redshift announces support for Dynamic Data Masking (Preview)

Amazon Redshift の動的データマスキング機能は 2022 年 11 月 29 日現在において、プレビューのステータスです。この機能は、運用環境ではなく、テスト クラスターでのみ使用することをお勧めします。パブリック プレビューは 2023 年 2 月 28 日に終了します。プレビュー クラスターとプレビュー サーバーレス ワークグループおよび名前空間は、プレビューの終了から 2 週間後に自動的に削除されます。

動的データマスキング

Amazon Redshift ではロールベースのアクセス制御、行レベルセキュリティ、列レベルセキュリティをサポートしています。今回機密データの保護を簡単にする Dynamic Data Masking (DDM) をサポートしました。Dynamic Data Masking (DDM) ではクエリ時に Redshift の機密データの返し方を決めるシンプルな SQL ベースのマスキングポリシーでアクセスを制御できます。

この機能によりセキュリティ管理者はテーブル内の特定の列または列のリストにマスキングを適用できます。マスキングデータは表示方法を選択でき、データを完全に隠したり、部分的にワイルドカード文字に置き換えたり、SQL式、Python、Lambda ユーザー定義関数を使用して独自にデータマスキング方法を定義できます。

今まではデータマスキングを行おうとする場合には、ETL/ELTを使用して静的にデータマスキングを行ったり、独自の UDF で実装する必要がありました。

対応リージョン

  • 米国東部 (オハイオ) – us-east-2
  • 米国東部 (バージニア北部) – us-east-1
  • 米国西部 (オレゴン) – us-west-2
  • アジアパシフィック (東京) – ap-northeast-1
  • ヨーロッパ (アイルランド) – eu-west-1
  • ヨーロッパ (ストックホルム) – eu-north-1

コマンド

DDM のポリシーを作成するにはCREATE MASKING POLICYコマンドを使用します。

以下の場合では、クレジッドカード番号にソルトを付与して SHA-2 でハッシュ化しています。

CREATE MASKING POLICY hash_credit 
WITH (credit_card varchar(256)) 
USING (sha2(credit_card + 'testSalt', 256));

テーブルの DDL ポリシーをユーザーやロールにアタッチするにはATTACH MASKING POLICYコマンドを使用します。

PRIORITY 句は複数のポリシーが同じ列にアタッチされている場合に使用されるマスキングポリシーを決定します。

ATTACH MASKING POLICY hash_credit 
ON credit_cards (credit_card) 
TO ROLE science_role 
PRIORITY 30;

ポリシーをデタッチする場合にはDETACH MASKING POLICYコマンドを使用します。

DETACH MASKING POLICY hash_credit 
ON credit_cards(credit_card) 
FROM ROLE science_role;

DDMポリシーを削除する場合にはDROP MASKING POLICYコマンドを使用します。

DROP MASKING POLICY hash_credit;

さいごに

今回のアップデートにより、列のアクセス時にユーザーによってデータをマスキングして固定値やハッシュによるID化などへ動的に行えるので二重にデータを保持する必要がなく、データ管理が簡素化されます。

今後は Data Sharing と併用できると、外部へのデータ共有が楽になりそうなので、今後を注視していきたいです。