すべてのプロダクト
Search
ドキュメントセンター

Data Security Center:データベースの列レベルの暗号化の設定

最終更新日:Apr 01, 2026

Data Security Center (DSC) は、データベース内の特定の列を暗号化し、電話番号、パスワード、ID ドキュメントなどの機密データが暗号文として保存されるようにします。権限のあるユーザーは、常時機密クライアントを通じてプレーンテキストを復号して読み取ることができます。

サポート対象のデータベース: RDS for MySQL、RDS for PostgreSQL、PolarDB for MySQL、PolarDB for PostgreSQL、PolarDB for PostgreSQL (Compatible with Oracle)、および PolarDB-X 2.0。

重要

列の暗号化は、DSC の無料版、プレミアム版、エンタープライズ版、7 日間トライアル版、および付加価値サービス限定版で利用できます。この機能を追加する、またはクォータを増やすには、DSC エディションをアップグレードしてください。

対応データベースと制限

開始する前に、これらの制約をお読みください。これらは設定中に行う決定に影響し、リスクなしに変更することはできません。

データの型の変更: SQL を介して暗号化された列をクエリすると、DSC は元のデータの型を無視します。元の型に関係なく、すべての値は文字列として返されます。

暗号化方式の変更は破壊的です: 暗号化方式を変更すると、DSC は暗号化タスクを再起動します。再起動中、元々暗号化されていたデータは一時的にプレーンテキストで保存されるため、データ漏洩のリスクが生じます。暗号化を有効にする前に暗号化方式を選択し、その後は変更しないようにしてください。

PolarDB for MySQL のエンドポイント要件: 列レベルの暗号化ポリシーは、プロキシ接続アドレス (読み取り / 書き込み分離モード) を介した接続にのみ適用されます。プライマリエンドポイントを介した接続はポリシーをバイパスします。

バージョンおよびアルゴリズムの要件

開始する前に、以下を確認してください。

  • DSC を購入しており、十分な列レベルの暗号化権限のクォータがあること。

  • ご利用のデータベースインスタンスが所在するリージョンが、列レベルの暗号化をサポートしていること。詳細については、「サポート対象リージョン」をご参照ください。

サポート対象のデータベースと制限

バージョンとアルゴリズムの要件

データベースサポート対象バージョンサポート対象アルゴリズム暗号化方式
RDS for MySQLMySQL 5.7 または 8.0 (マイナーエンジンバージョン 20240731 以降)AES_128_GCM (すべてのバージョン)、AES_256_GCM および SM4_128_GCM (マイナーエンジンバージョン 20241231 以降)。中国本土以外: AES_128_GCM のみ。ローカルキー、KMS キー (マイナーエンジンバージョン 20241231 以降、ディスクストレージのみ)
RDS for PostgreSQLPostgreSQL 16 (マイナーエンジンバージョン 20241230 以降)AES_256_GCMローカルキー
PolarDB for MySQLMySQL 5.7 または 8.0 (データベースプロキシのバージョン 2.8.36 以降)AES_128_GCMローカルキー
PolarDB for PostgreSQLPostgreSQL 14 (データベースバージョン 2.0.14.15.31.0 以降)AES_256_GCMローカルキー
PolarDB for PostgreSQL (Compatible with Oracle)Oracle 構文互換性 2.0、PostgreSQL 14 (データベースバージョン 2.0.14.15.31.0 以降)AES-256-GCMローカルキー
PolarDB-X 2.0バージョン polardb-2.5.0_5.4.20-20250714_xcluster8.4.20-20250703 以降AES-128-GCM, SM4-128-GCMローカルキー

データベースタイプごとのアカウント権限

データベースデフォルト権限利用可能な権限
RDS for MySQL (ローカルキー)暗号文権限 (復号権限なし)暗号文権限 (復号権限なし)、暗号文権限 (JDBC 復号)、プレーンテキスト権限
RDS for MySQL (KMS キー)暗号文権限 (JDBC 復号)暗号文権限 (JDBC 復号)、プレーンテキスト権限
RDS for PostgreSQL暗号文権限 (JDBC 復号)暗号文権限 (JDBC 復号)、プレーンテキスト権限
PolarDB for MySQL暗号文権限 (JDBC 復号)暗号文権限 (JDBC 復号)、プレーンテキスト権限
PolarDB for PostgreSQL暗号文権限 (JDBC 復号)暗号文権限 (JDBC 復号)、プレーンテキスト権限
PolarDB for PostgreSQL (Compatible with Oracle)暗号文権限 (JDBC 復号)暗号文権限 (JDBC 復号)、プレーンテキスト権限
PolarDB-X 2.0暗号文権限 (JDBC 復号)暗号文権限 (JDBC 復号)、プレーンテキスト権限

制限事項

  • 読み取り専用インスタンスでは列レベルの暗号化を設定できません。プライマリインスタンスで暗号化を設定してください。変更はすべての読み取り専用インスタンスに自動的にレプリケートされます。

  • 一時停止中またはメンテナンス中のインスタンスでは、列レベルの暗号化を設定できません。インスタンスステータスが [実行中] になるまで待ってください。インスタンスを起動します

  • 最小バージョン要件を満たさないインスタンスは、[暗号化チェック] に失敗します。続行する前にデータベースをアップグレードしてください。

  • 中国本土以外では、RDS for MySQL でサポートされているのは AES_128_GCM のみです。

  • PolarDB for MySQL の場合、プロキシ接続アドレスを介して接続する必要があります。プライマリエンドポイントでは暗号化ポリシーは適用されません。

列レベルの暗号化の設定

インスタンスを購入してから初めて DSC を使用する場合は、5つのステップすべてを順番に実行してください。すでにクラウドリソースの権限付与と資産の同期が完了している場合は、ステップ 3 から開始してください。

ステップ 1: DSC にクラウドリソースへのアクセスを権限付与する

  1. DSC コンソールにログインします。

  2. [RAM 承認] ダイアログボックスで、[今すぐ承認] をクリックします。

これにより、DSC は OSS、RDS、MaxCompute などのサービスのリソースにアクセスできるようになります。

ステップ 2: データベース資産を同期する

  1. 左側のナビゲーションウィンドウで、[アセットセンター] をクリックします。

  2. [アセットセンター] ページで、[アセットの同期] をクリックします。

DSC インスタンスを購入した後、初めてログインすると資産の同期が自動的に実行されます。DSC は毎日深夜に資産リストを自動的に同期します。

ステップ 3: データベースを接続し、データ分類を実行する

列レベルの暗号化を有効にする前に、DSC はデータ分類スキャンを完了する必要があります。次の2つの方法のいずれかを使用してデータベースを接続します。

接続方法仕組みサポート対象のデータ資産
ワンクリック接続DSC はターゲットデータベースに読み取り専用アカウント (プレフィックス: sddp_auto) を自動的に作成します。このアカウントは読み取り専用であるため、データベースをデータマスキングタスクの送信先として使用することはできません。RDS for MySQL、RDS for SQL Server (プライマリインスタンスのみ)、RDS for MariaDB (プライマリインスタンスのみ)、PolarDB for MySQL、PolarDB-X 1.0 (DRDS)、PolarDB-X 2.0 (プライマリインスタンスのみ)、OSS、Tablestore、MaxCompute、Simple Log Service (SLS)
認証情報ベースの接続指定したデータベースアカウントとパスワードを使用して接続します。読み取り専用アカウントは検出、マスキング、監査タスクをサポートしますが、データベースをマスキングの送信先にはできません。読み取り/書き込み権限を持つアカウントを使用すると、データベースをマスキングの送信先として使用できます。構造化データ: RDS、PolarDB、PolarDB-X (旧 DRDS)、PolarDB-X 2.0、ApsaraDB for MongoDB、ApsaraDB for OceanBase、および自己管理データベース。ビッグデータ: AnalyticDB for MySQL および AnalyticDB for PostgreSQL。

データベースを接続して分類を開始するには:

  1. 左側のナビゲーションウィンドウで、[アセットセンター] をクリックします。

  2. [構造化データ] エリアで、暗号化するデータベースタイプをクリックします。

  3. ターゲットインスタンスの[分類と等級付け] 列で、image をクリックします。

    インスタンスステータスは [実行中] であり、インスタンス内に少なくとも1つのデータベースが存在する必要があります。データベースが存在しない場合、データ分類機能を有効にすることはできません。

    image

  4. [分類およびグレーディングの有効化]」ダイアログボックスで、パラメーターを設定します。

    パラメーター説明
    アクティベーション方法DSC に読み取り専用の sddp_auto アカウントを自動作成させるには、[データベースアカウントを自動的に作成] を選択します。独自の認証情報を使用するには、[ユーザー名とパスワードを手動で入力]
    権限付与範囲[データソース全体] を選択するか、[データソースリストで権限付与範囲を管理] を選択して、対象に含めるデータベースを指定します。
    デフォルトのスキャンタスクを自動的に作成して開始接続が成功すると、DSC はデフォルトのスキャンタスクを作成して開始します。結果は、[分類とグレーディング] > [タスク] > [識別タスク] タブの [デフォルトタスク] で確認できます。
    新しいデータベースに自動的に接続。資産が同期されるたびに、DSC はインスタンス内で新たに検出されたデータベースに自動で接続します。
  5. [OK]をクリックします。

ステップ 4: データベースの暗号化ステータスを確認する

分類が完了したら、各データベースインスタンスの暗号化の準備状況を確認します。

  1. 左側のナビゲーションウィンドウで、[リスクガバナンス] > [列の暗号化] を選択します。

  2. [列の暗号化] ページで、以下の情報を確認してください:

    フィールド説明
    接続されているすべてのデータベースインスタンス全体の列の総数です。
    機密データ (S3以上)感度レベルS3以上に分類された列を、暗号化済み、未暗号化、失敗に分類して表示します。
    アカウントアカウント総数:データベースごとのアカウントは個別にカウントされます。暗号化が設定されていないアカウント:暗号化ポリシーが設定されていないアカウントです。プレーンテキスト権限および暗号文権限のカウント:各権限タイプのアカウントです。いずれかのカウントをクリックするか、[権限設定] をクリックして、アカウントの詳細全体を表示します。
    リスト情報インスタンス名、アセットタイプ、リージョン、暗号化アルゴリズム、プレーンテキスト権限アカウント、および暗号化チェック結果です。

    感度レベルのリファレンス:

    レベル意味
    N/A機密情報は検出されませんでした
    S1非機密 (例: 都道府県、市区町村、製品名)
    S2中程度の機密 (例: 氏名、住所)
    S3高機密 (例: ID ドキュメント、パスワード、データベース認証情報)
    S4コア機密 (例: 遺伝子、指紋、虹彩スキャンなどの生体認証データ)

    image

  3. 各インスタンスの[暗号化チェック]列を確認してください。

    • [合格]: インスタンスは列レベルの暗号化の設定準備ができています。

    • 失敗: データベースのバージョンが互換ではありません。 [アップグレードへ移動] をクリックして、RDS または PolarDB コンソールのアップグレードページを開きます。アップグレード後、アセットを再度同期します。[アセットセンター] に移動し、[承認管理] タブで [アセット承認管理] をクリックします。[アセット承認管理] パネルで、ターゲットインスタンスタイプ (RDS または PolarDB) をクリックし、その後 [アセット同期] をクリックします。

ステップ 5: 列レベルの暗号化を有効にする

暗号化チェック」のステータスが [合格] であることを確認した後、列レベルの暗号化を設定します。

クイック暗号化で暗号化を有効にする

以下の3つのエントリーポイントのいずれかを使用して、[暗号化設定] パネルを開きます:

  • データベースインスタンスリストの上にある[高速暗号化]をクリックすると、すべてのインスタンスにわたる暗号化されていない列がすべて暗号化されます。

  • 特定のインスタンスの[アクション] 列で、[高速暗号化] をクリックします。

    image

  • [資産センター] ページで、ターゲットインスタンスの [カラム暗号化] カラムにある image をクリックします。

    image

  • データベースへのアクセスを権限付与する

[暗号化設定]」パネルで、[アセットタイプ][インスタンス名]暗号化アルゴリズム暗号化方式、および平文権限アカウントを選択します。次に、対象の[データベース][テーブル]、およびを選択し、[OK] をクリックします。

image

暗号化方式に関する注意:

  • KMS キー]を選択した場合、まず Key Management Service (KMS) で対称キーを作成する必要があります。

    image

  • > 重要: 設定後に暗号化方式を変更すると、DSC は暗号化タスクを再起動します。再起動中、暗号化された列のデータは一時的にプレーンテキストで保存されます。暗号化を有効にする前に、暗号化方式を最終決定してください。

プレーンテキスト権限アカウントに関する注意:

暗号化を有効にすると、すべてのデータベースアカウントはデフォルトで暗号文権限になります。特定のアカウントがプレーンテキストを直接読み取れるようにするには、それらをプレーンテキスト権限の許可リストに追加します。

重要

DSC サービスアカウント (sddp_auto (ワンクリック接続) または指定したアカウント (認証情報ベースの接続)) は、DSC が最新のデータを読み取って分類スキャンを継続できるように、[プレーンテキスト権限] を持っている必要があります。

その他の操作

アカウント権限の変更

デフォルトでは、プレーンテキスト権限が明示的に付与されているアカウントを除くすべてのアカウントが暗号文権限を持ちます。権限を変更するには:

  1. リスクガバナンス」>「列暗号化」ページで、「アカウント」エリアの「権限設定」をクリックします。または、インスタンスの「操作」列で「編集」をクリックし、次に「アカウント権限」の横にある「設定」をクリックします。

  2. [権限設定]」パネルで、ターゲットインスタンスとアカウントを確認してください。

    新しいアカウントがリストに表示されない場合は、[資産の同期] を実行して再度確認してください。
  3. アカウントの [操作] 列で、[権限の変更] をクリックします。複数のアカウントを一度に更新するには、同じ現在の権限を持つアカウントを選択し、[一括で権限を変更] をクリックします。

  4. 対象の権限を選択し、[OK] をクリックします。

利用可能な権限: [プレーンテキスト権限][暗号文権限 (復号権限なし)]、または [暗号文権限 (JDBC 復号)]

暗号化された列の範囲またはアルゴリズムの更新

暗号化が設定された後、範囲やアルゴリズムを調整できます。

  • 単一の列の暗号化を切り替えるには、インスタンスリストでインスタンスを展開し、[データベース][テーブル]、および[列]を特定してから、[暗号化を有効化]または[暗号化を無効化]をクリックします。

    image

  • アルゴリズム、メソッド、または暗号化された列の範囲を更新するには、インスタンスの [アクション] 列で [編集] をクリックします。

    • 暗号化アルゴリズム または 暗号化方式 の横にある [変更] をクリックして、設定を更新します。

    • > 重要: 暗号化方式を変更すると、暗号化タスクが再起動します。再起動中、暗号化された列のデータは一時的にプレーンテキストで保存されます。注意して進めてください。

    • データベースリストで、対象の[データベース][テーブル]、および[カラム]を見つけ、[暗号化を有効にする]または[暗号化を無効にする]をクリックします。

    image

例: 暗号化された列へのアクセスの検証

列レベルの暗号化を設定した後、権限が期待どおりに機能することを確認します。暗号文権限を持つアカウントは、暗号化された列をクエリすると暗号文を受け取るべきです。プレーンテキスト権限を持つアカウントは、元の値を受け取るべきです。

RDS for PostgreSQL アカウントは、プレーンテキスト権限と暗号文権限 (JDBC 復号) のみをサポートします。検証方法は RDS for MySQL と同じです。

RDS for MySQL の例

セットアップ: DSC に接続された RDS for MySQL 8.0 インスタンスで、データ分類スキャンが完了している。

image

列レベルの暗号化の設定:

  1. users テーブルの phone カラムに対して暗号化を有効にする。

    image

  2. 各データベースアカウントのアクセス権限を設定します。

    image

アクセスの検証:

  1. [プレーンテキスト権限] を持つアカウントを使用してログインします。詳細については、「Data Management (DMS) を使用した RDS データベースへのログイン」をご参照ください。SELECT 文を実行すると、暗号化された列はプレーンテキストを返します。

    image

  2. [暗号文権限 (復号権限なし)] を持つアカウントに切り替えて、同じ SELECT 文を実行すると、暗号化された列は暗号文を返します。

    image

  3. [暗号文権限 (JDBC 復号)] を持つアカウントに切り替えて、同じ SELECT 文を実行すると、暗号化された列は暗号文を返します。

    image

PolarDB for MySQL の例

セットアップ: DSC に接続された PolarDB for MySQL 5.7 クラスターで、データ分類スキャンが完了している。

image

列レベルの暗号化の設定:

  1. password 列の暗号化を user3 テーブルで有効化します。

    image

  2. 各データベースアカウントのアクセス権限を設定します。

    image

アクセスの検証:

Data Management (DMS) はプライマリエンドポイントを介して PolarDB for MySQL に接続するため、DMS を介しては列レベルの暗号化ポリシーは有効になりません。代わりに MySQL クライアントを使用して、プロキシ接続アドレスを介して接続します。

  1. ご利用のオペレーティングシステムと互換性のある MySQL クライアントをインストールします。

  2. プロキシ接続アドレスを使用してクラスターに接続します。

    • プレーンテキスト権限アカウント: mysql -hpc-bp1fd7******v6f.rwlb.rds.aliyuncs.com -P3306 -usddp_polardb -pH******4

    • 暗号文権限 (JDBC 復号) アカウント: mysql -hpc-bp1fd7******v6f.rwlb.rds.aliyuncs.com -P3306 -usddp_03 -pP********3

    mysql -h<endpoint> -P<port> -u<username> -p<password>

    コマンド例:

  3. 次のコマンドを実行します。

    • プレーンテキスト権限アカウント — 暗号化された列はプレーンテキストを返します。image

    • 暗号文権限 (JDBC 復号) アカウント — 暗号化された列は暗号文を返します。image

    use sddp_test;
    SELECT * FROM user3 LIMIT 0, 3;

常時機密クライアント経由でのプレーンテキストへのアクセス

暗号文権限 (JDBC 復号) を持つアカウントは、常時機密クライアントを使用して、アプリケーションコード内で暗号化された列のデータを復号できます。

言語サポート対象のデータベースリファレンス
JavaRDS for MySQL、RDS for PostgreSQL、PolarDB for MySQL、PolarDB for PostgreSQL、PolarDB for PostgreSQL (Compatible with Oracle)、PolarDB-X 2.0EncJDBC との連携 — ローカルキーと KMS キーをサポート
GoRDS for MySQL、PolarDB for MySQL、PolarDB-X 2.0Go ドライバーの統合 — ローカルキーのみをサポート

トラブルシューティング: 暗号化チェックの失敗

データベースのバージョンがサポート対象外

[アップグレードへ移動] を [暗号化チェック] 列でクリックして、データベースのアップグレードページを開きます。アップグレードガイド:

マイナーエンジンバージョンまたはデータベースプロキシのバージョンがサポート対象外

読み取り専用インスタンス

列レベルの暗号化はプライマリインスタンスで設定する必要があります。データはすべての読み取り専用インスタンスに自動的にレプリケートされるため、それぞれで個別に暗号化を設定する必要はありません。

インスタンスステータスが [実行中] ではない

インスタンスが起動するか、メンテナンスが完了するのを待ってから、ステータスが [実行中] であることを確認してから列レベルの暗号化を設定してください。

次のステップ