背景情報
デフォルトでは、データテーブルの作成時にデータテーブルのデータ暗号化は無効になっています。データテーブルのデータ暗号化を有効にするには、データテーブルの作成時に暗号化関連のパラメータを設定する必要があります。Tablestoreは、Key Management Service (KMS)キーに基づく暗号化とBring Your Own Key (BYOK)に基づく暗号化の2つの暗号化方式をサポートしています。どちらの方法でも、KMSからキーを取得する必要があります。ビジネス要件に基づいて方法を選択できます。
KMSは、ワンストップの鍵管理およびデータ暗号化プラットフォームであり、ワンストップのシークレット管理プラットフォームです。KMSは、シンプルで信頼性が高く、安全で、コンプライアンスに準拠したデータ暗号化保護とシークレット管理機能を提供します。KMSは、暗号化インフラストラクチャ、データ暗号化サービス、およびシークレット管理サービスの調達、運用保守、および研究開発のコストを削減するのに役立ちます。これにより、ビジネスアプリケーションの開発に集中できます。詳細については、KMSとは を参照してください。
暗号化方式 | 使用方法 | 説明 |
KMSキーベースの暗号化 | Tablestoreコンソール Tablestore SDK
| Tablestoreは、デフォルトのKMS管理のカスタマーマスターキー (CMK) を使用してデータを暗号化し、データの読み取り時に自動的に復号化します。KMSキーベースの暗号化を初めて使用する場合、TablestoreはKMSコンソールにKMS管理のCMKを作成します。KMSインスタンスを購入する必要はありません。 |
BYOKベースの暗号化 | Tablestoreコンソール Tablestore SDK
| BYOKマテリアルを使用してKMSコンソールでカスタムキーを生成した後、Tablestoreはカスタムキーに基づいてデータを暗号化できます。使用する暗号化キーを管理できます。 |
シナリオ
セキュリティまたはコンプライアンス要件の高いシナリオでデータ暗号化機能を有効にできます。
使用上の注意
データ暗号化機能は、データテーブルの作成時にのみ設定できます。
データ暗号化機能を有効にした後、機能を無効にすることはできません。注意して進めてください。
データ暗号化機能は、中国 (杭州)、中国 (上海)、中国 (深圳)、中国 (北京)、中国 (張家口)、中国 (ウランチャブ)、中国 (香港)、シンガポール、インドネシア (ジャカルタ)、米国 (シリコンバレー)、米国 (バージニア)、英国 (ロンドン)、日本 (東京)、およびドイツ (フランクフルト) リージョンでご利用いただけます。
データ暗号化機能を有効にする
Tablestoreコンソールでデータ暗号化機能を有効にする
Tablestoreコンソールでデータテーブルを作成する場合、データテーブルのKMSキーベースの暗号化またはBYOKベースの暗号化を有効にできます。
KMSキーベースの暗号化
Tablestoreコンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
概要ページで、管理するインスタンスの名前をクリックするか、インスタンスの操作列のインスタンスの管理をクリックします。
インスタンスの詳細 タブで、テーブルの作成 をクリックします。
テーブルの作成 ダイアログボックスで、パラメーターを構成します。
テーブル名、プライマリキー、更新を許可するなどのパラメータを設定します。
暗号化を有効にし、暗号化タイプ パラメーターでKMS の CMK を選択します。
OK をクリックします。
データテーブルの作成後、テーブル名をクリックします。基本情報タブのテーブルの管理ページで、暗号化パラメーターの値がはい - KMS の CMKであることを確認します。これは、データテーブルに対してデータ暗号化機能が有効になっていることを示します。
BYOKベースの暗号化
KMSコンソールでソフトウェア保護キーを作成します。詳細については、鍵管理の概要トピックの「ソフトウェア保護キー」セクションを参照してください。
Resource Access Management (RAM) ロールを作成し、RAMロールに権限を付与します。
RAMロールを作成します。詳細については、信頼できるAlibaba CloudアカウントのRAMロールを作成するを参照してください。
ロール名をAliyunOTSAccessingKMSに設定します。
KMSの暗号化と復号化の権限を含むカスタムポリシーを作成します。カスタムポリシーの作成方法については、カスタムポリシーを作成するトピックの「JSONタブでカスタムポリシーを作成する」セクションを参照してください。
ポリシー名をotskmspolicytestに設定します。ポリシーの例:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": [
"*"
]
}
]
}
otskmspolicytestポリシーをAliyunOTSAccessingKMSロールにアタッチします。詳細については、RAMロールに権限を付与するを参照してください。
承認が完了したら、RAMロールのAlibaba Cloudリソース名 (ARN) を記録します。ARNはRAMロールのIDを示します。
RAMロールの信頼ポリシーを変更します。詳細については、RAMロールの信頼ポリシーを編集するを参照してください。
信頼ポリシーの例:
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"ots.aliyuncs.com"
]
}
}
],
"Version": "1"
}
データテーブルを作成し、暗号化関連のパラメータを設定します。
Tablestoreコンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
概要ページで、管理するインスタンスの名前をクリックするか、インスタンスの操作列のインスタンスの管理をクリックします。
インスタンスの詳細タブで、テーブルの作成をクリックします。
テーブルの作成 ダイアログボックスで、パラメーターを構成します。
テーブル名、プライマリキー、更新を許可するなどのパラメータを設定します。
暗号化を有効にし、暗号化の種類パラメーターでBYOK ベースのキーを選択します。
OK をクリックします。
データテーブルの作成後、テーブル名をクリックします。基本情報タブのテーブルの管理ページで、暗号化パラメーターの値がはい (BYOK ベースのキー)であることを確認します。これは、データテーブルに対してデータ暗号化機能が有効になっていることを示します。
Tablestore SDKを使用してデータ暗号化機能を有効にする
Tablestore SDKを使用してデータテーブルを作成する場合、データテーブルのKMSキーベースの暗号化またはBYOKベースの暗号化を有効にできます。Tablestore SDK for Javaを使用して、データテーブルの暗号化を設定できます。
KMSキーベースの暗号化
データテーブルのKMSキーベースの暗号化を有効にするには、KMSをアクティブ化する必要があります。ただし、KMSインスタンスを作成する必要はありません。データテーブルを作成した後、DescribeTableオペレーションを呼び出して、テーブルの暗号化設定をクエリできます。
次のサンプルコードは、データテーブルの作成時にデータテーブルのKMSキーベースの暗号化を有効にする方法を示しています。データテーブルのプライマリキーはpkで、STRING型です。属性列の値については、最新バージョンのデータのみが保持され、データは期限切れになりません。
private static void createTable(SyncClient client) {
// データテーブルの名前を指定します。
TableMeta tableMeta = new TableMeta("<TABLE_NAME>");
// データ暗号化を設定する場合、CreateTableリクエストで暗号化関連のパラメータを設定します。KMSキーベースの暗号化とBYOKベースの暗号化という以下の暗号化方式がサポートされています。この例では、KMSキーベースの暗号化が有効になっています。
SSESpecification sseKms = new SSESpecification(true, SSEKeyType.SSE_KMS_SERVICE);
// データテーブルにプライマリキー列を追加します。
tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk", PrimaryKeyType.STRING));
// データの有効期限を指定します。-1の値は、データが期限切れにならないことを指定します。単位:秒。インデックステーブルを作成するデータテーブルの場合、timeToLiveパラメータを-1に設定する必要があります。
int timeToLive = -1;
// 各列に保持できるデータバージョンの最大数を指定します。1の値は、各列の最新バージョンのデータのみが保持されることを指定します。インデックステーブルを作成するデータテーブルの場合、maxVersionsパラメータを1に設定する必要があります。
int maxVersions = 1;
TableOptions tableOptions = new TableOptions(timeToLive, maxVersions);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
// 予約済み読み込みスループットと予約済み書き込みスループットを指定します。キャパシティインスタンスのデータテーブルの場合は値を0に設定する必要があり、高パフォーマンスインスタンスのデータテーブルの場合は0以外の値に設定できます。
request.setReservedThroughput(new ReservedThroughput(new CapacityUnit(0, 0)));
request.setSseSpecification(sseKms);
client.createTable(request);
}
BYOKベースの暗号化
KMSコンソールでソフトウェア保護キーを作成します。詳細については、鍵管理の概要トピックの「ソフトウェア保護キー」セクションを参照してください。
RAMロールを作成し、RAMロールに権限を付与します。
RAMロールを作成します。詳細については、信頼できるAlibaba CloudアカウントのRAMロールを作成するを参照してください。
ロール名をAliyunOTSAccessingKMSに設定します。
KMSの暗号化と復号化の権限を含むカスタムポリシーを作成します。カスタムポリシーの作成方法については、カスタムポリシーを作成するトピックの「JSONタブでカスタムポリシーを作成する」セクションを参照してください。
ポリシー名をotskmspolicytestに設定します。ポリシーの例:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": [
"*"
]
}
]
}
otskmspolicytestポリシーをAliyunOTSAccessingKMSロールにアタッチします。詳細については、RAMロールに権限を付与するを参照してください。
承認が完了したら、RAMロールのARNを記録します。ARNはRAMロールのIDを示します。
RAMロールの信頼ポリシーを変更します。詳細については、RAMロールの信頼ポリシーを編集するを参照してください。
信頼ポリシーの例:
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"ots.aliyuncs.com"
]
}
}
],
"Version": "1"
}
データテーブルを作成し、暗号化関連のパラメータを設定します。
データテーブルを作成し、BYOKベースの暗号化を有効にします。データテーブルを作成した後、DescribeTableオペレーションを呼び出して、テーブルの暗号化設定をクエリできます。
次のサンプルコードは、データテーブルの作成時にデータテーブルのBYOKベースの暗号化を有効にする方法を示しています。データテーブルのプライマリキーはpkで、STRING型です。属性列の値については、最新バージョンのデータのみが保持され、データは期限切れになりません。
private static void createTable(SyncClient client) {
// データテーブルの名前を指定します。
TableMeta tableMeta = new TableMeta("<TABLE_NAME>");
// データ暗号化を設定する場合、CreateTableリクエストで暗号化関連のパラメータを設定します。KMSキーベースの暗号化とBYOKベースの暗号化という以下の暗号化方式がサポートされています。
// keyIdパラメータを、手順1でKMSコンソールに作成したソフトウェア保護キーのIDに設定します。
String keyId="key-hzz65****************";
// roleArnパラメータを、手順2で記録したRAMロールのARNに設定します。
String roleArn="acs:ram::****************:role/aliyunotsaccessingkms";
// この例では、BYOKベースの暗号化が有効になっています。
// keyIdパラメータをKMSのカスタムキーのIDに設定します。roleArnパラメータを使用するRAMロールのARNに設定します。RAMロールを作成し、RAMロールのARNを記録する必要があります。
SSESpecification sseByok = new SSESpecification(true, SSEKeyType.SSE_BYOK, keyId, roleArn);
// データテーブルにプライマリキー列を追加します。
tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk", PrimaryKeyType.STRING));
// データの有効期限を指定します。-1の値は、データが期限切れにならないことを指定します。単位:秒。インデックステーブルを作成するデータテーブルの場合、timeToLiveパラメータを-1に設定する必要があります。
int timeToLive = -1;
// 各列に保持できるデータバージョンの最大数を指定します。1の値は、各列の最新バージョンのデータのみが保持されることを指定します。インデックステーブルを作成するデータテーブルの場合、maxVersionsパラメータを1に設定する必要があります。
int maxVersions = 1;
TableOptions tableOptions = new TableOptions(timeToLive, maxVersions);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setReservedThroughput(new ReservedThroughput(new CapacityUnit(0, 0))); // 予約済み読み込みスループットと予約済み書き込みスループットを指定します。キャパシティインスタンスのデータテーブルの場合は値を0に設定する必要があり、高パフォーマンスインスタンスのデータテーブルの場合は0以外の値に設定できます。
request.setSseSpecification(sseByok);
client.createTable(request);
}
請求
データ暗号化料金はKMSによって課金されます。詳細については、請求を参照してください。