列暗号化は、クレジットカード番号や国民識別番号などの機密性の高いデータベースフィールドを保護し、承認されたデータベースアカウントのみがプレーンテキスト値を表示できるようにします。これは、ApsaraDB RDS for MySQL の Always-Confidential Database 機能の Basic Edition です。
列暗号化には、連携して機能する 2 つのコンポーネントがあります。
-
列暗号化ルール:どのデータベース、テーブル、フィールドを暗号化するかを定義します。
-
ロールの権限設定:どのデータベースアカウントがプレーンテキストまたは暗号文データを表示できるかをコントロールします。
列暗号化ルールを追加する前に、ロールの権限を設定してください。先に暗号化ルールを追加すると、明示的なロールの割り当てがないデータベースアカウントはデフォルトで [その他の管理者 (暗号文を表示)] ロールになり、アプリケーションで文字化けやアクセスエラーが発生する可能性があります。
前提条件
開始する前に、以下が準備できていることを確認してください。
-
マイナーエンジンバージョンが 20240731 以降の MySQL 5.7 または 8.0 を実行している ApsaraDB RDS for MySQL インスタンス。アップグレードについては、「マイナーエンジンバージョンの更新」をご参照ください。
-
常時機密機能が有効になっていること。「常時機密機能の有効化」をご参照ください。
-
データ保護ルールを設定するための特権アカウント。
注意事項
-
データ保護ルールは、有効化されると RDS インスタンス上のすべてのデータベースに適用されます。データベースごとの設定は不要です。
-
データ保護ルールの管理とオンラインアプリケーションの実行には、別々のデータベースアカウントを使用してください。必要でない限り、アプリケーションアカウントに管理権限を付与することは避けてください。
-
警告:
mysql.encdb_sensitive_rulesおよびmysql.encdb_auth_usersに対する読み取りおよび書き込み権限の付与は、慎重に行ってください。これらのテーブルが不正に変更されると、攻撃者が常時機密保護をバイパスする可能性があります。
ロールの権限
次の表に、各ロールで実行できる操作を示します。
| ロール | プレーンテキストの表示 | 暗号文の表示 | カスタム専用キーの作成 |
|---|---|---|---|
| スーパー管理者 | はい | — | — |
| 運用保守管理者 | — | はい | はい |
| その他の管理者 | — | はい | — |
データベースアカウントにロールを割り当てない場合、デフォルトで [その他の管理者 (暗号文を表示)] になります。
ロールの権限の設定または変更
-
[RDS インスタンス] ページに移動し、上部のナビゲーションバーでリージョンを選択してから、ターゲットインスタンスの ID をクリックします。
-
左側のナビゲーションウィンドウで、[データセキュリティ] をクリックします。
-
[列の暗号化] タブをクリックします。
-
[ロールの権限設定] をクリックし、管理するロールを見つけてから、[操作] 列の [アカウントの設定] または [アカウントの変更] をクリックします。
-
[アカウントの設定] ページで、次のパラメーターを設定し、[OK] をクリックします。
説明スーパー管理者ロールは、別々の操作で複数のアカウントに割り当てることができます。たとえば、ユーザー A に割り当てた後、ユーザー B に割り当てることができます。アカウントのロールを取り消すには、そのロールを [その他の管理者] に変更します。
パラメーター 必須 説明 有効期限 はい (スーパー管理者のみ) 有効期限が到来すると、スーパー管理者の権限は自動的に [その他の管理者] (プレーンテキストへのアクセス不可) にリセットされます。 関連アカウント いいえ ドロップダウンリストから既存のデータベースアカウントを 1 つ以上選択します。 カスタムアカウント いいえ データベースアカウント名を 1 つ以上手動で入力します。複数の名前はカンマ (,) で区切ります。
列暗号化ルール
列暗号化ルールの削除
[列の暗号化] タブで [暗号化ルールのリスト] をクリックし、削除するルールを見つけてから、操作列の [削除] をクリックします。