説明
このステートメントは、機密データ保護ルールを作成するために使用されます。
権限要件
CREATE SENSITIVE RULE ステートメントを実行するには、現在のユーザーが CREATE SENSITIVE RULE 権限を持っている必要があります。OceanBaseデータベースの権限の詳細については、Oracleモードの権限分類を参照してください。
構文
CREATE SENSITIVE RULE <rule_name>
ON <sensitive_field_list>
USING ENCRYPTION [ = <encryption_method>];
パラメータ説明
具体的なパラメータ説明は以下の通りです:
パラメータ |
データ型 |
デフォルト値 |
説明 |
|---|---|---|---|
| rule_name | 文字列 | 暗号化ルールの名前で、テナント内で一意である必要があります。 | |
| sensitive_field_list | 文字列 | 暗号化する列を表します。形式は user.table(col1, col2), user2.table2(col3, col4), ... で、各機密項目はテーブル上の1つ以上の列を指定し、各列はカンマで区切られます。各機密項目間もカンマで区切り、機密ルールで保護する列を指定します。1つのルールで複数のユーザー、複数のテーブル上の複数の列を指定できます。パラメータ説明:
|
|
| encryption_method | 文字列 | USING ENCRYPTION はパラメータを指定しなくても構いません。これはデフォルトの暗号化アルゴリズムを使用することを意味し、デフォルトは aes-256 です。実際には AES-256-ECB 暗号化アルゴリズムを指します。USING ENCRYPTION = DEFAULT と書くこともでき、意味は同じです。 |
encryption_method で許可される値は以下の通りです:
値(SQL構文での使用) |
実際に使用される暗号化アルゴリズム |
キー長 |
モード |
説明 |
|---|---|---|---|---|
| aes-256 | AES-256-ECB | 256ビット | ECB | デフォルトアルゴリズム |
| aes-128 | AES-128-ECB | 128ビット | ECB | |
| aes-192 | AES-192-ECB | 192ビット | ECB | |
| aes-128-gcm | AES-128-GCM | 128ビット | GCM | 高いセキュリティレベル、認証付き暗号化(AEAD)を提供 |
| aes-192-gcm | AES-192-GCM | 192ビット | GCM | 高いセキュリティレベル、認証付き暗号化(AEAD)を提供 |
| aes-256-gcm | AES-256-GCM | 256ビット | GCM | 高いセキュリティレベル、認証付き暗号化(AEAD)を提供 |
| sm4-cbc | SM4-CBC | CBC | 高いセキュリティレベル | |
| sm4-GCM | SM4-GCM | GCM | 高いセキュリティレベル、認証付き暗号化(AEAD)を提供 |
機密ルールを作成する際には、以下の点に注意する必要があります:
- ルールは作成後すぐに有効になります。
- ルール名はテナントレベルでグローバルに一意ですが、機密ルール全体でのみグローバルに一意であり、オブジェクトレベルでグローバルに一意というわけではありません。つまり、
R1という名前のテーブルとR1という名前の機密ルールは同時に存在できますが、R1という名前の機密ルールが2つ存在することはできません。 - Oracleモードでは、ルール名はデフォルトで大文字で保存されます。大文字と小文字を区別する必要がある場合は、名前識別子を二重引用符で囲むことができます。二重引用符で囲まれたルール名は厳密に大文字と小文字を区別します。例えば、
R1と"r1"は2つの異なるルールと見なされ、両方が同時に存在できます。 - 機密ルールのデータ保護レベルは 列レベル のみであり、テーブルレベルやデータベースレベルはありません。つまり、テーブル全体またはデータベース全体に対するデータ保護ルールの作成は許可されません。テーブル上のすべての列を暗号化する必要がある場合は、すべての列名を明示的に記述する必要があります。
- 1つのルールで1列または複数列を指定して保護できます。データベースやテーブルをまたいだ保護も可能です。
機密ルールを作成する際は、以下の制限事項に従う必要があります:
- データ保護ルールは、ユーザーテーブル(ビューを含む)の列にのみ適用できます。システムテーブルの列には適用できません。
- 1列は1つのルールによってのみ保護できます。
例
例:
-- 機密ルール r1 を作成し、tbl1(a)、tbl2(b, c)、user2.tbl3(e,f) を保護します。
-- デフォルトの暗号化アルゴリズム AES-256-ECB を使用します。
CREATE SENSITIVE RULE r1 ON tbl1(a), tbl2(b, c), user2.tbl3(e,f)
USING ENCRYPTION;
-- 機密ルール r2 を作成し、tbl4(x, y)、tbl5(z) を保護します。
-- sm4-cbc 暗号化アルゴリズムを使用します。
CREATE SENSITIVE RULE r2 ON tbl4(x, y), tbl5(z)
USING ENCRYPTION = 'sm4-cbc';