AWS Cloud Development Kit (AWS CDK) — это среда разработки программного обеспечения с открытым исходным кодом, позволяющая определять облачную инфраструктуру в коде и предоставлять ее через AWS CloudFormation. AWS Key Management Service (KMS) — это управляемый сервис, который позволяет легко создавать и контролировать ключи шифрования, используемые для шифрования данных.

В этом руководстве мы рассмотрим пример создания ключа KMS с помощью AWS CDK.

Предпосылки

Прежде чем мы начнем, убедитесь, что у вас есть следующее: — Учетная запись AWS — Установлен и настроен интерфейс командной строки AWS — Установлены Node.js и npm — Установлен AWS CDK

Шаг 1. Создайте новый проект AWS CDK

Во-первых, давайте создадим новый каталог для нашего проекта и перейдем в него:

mkdir kms-cdk-example
cd kms-cdk-example

Далее давайте инициализируем новый проект AWS CDK:

cdk init app --language=typescript

Шаг 2: Установите необходимые зависимости

Нам нужно установить AWS SDK и AWS CDK модуль AWS KMS:

npm install aws-sdk @aws-cdk/aws-kms

Шаг 3. Создайте новый ключ KMS.

Откройте файл `lib/kms-cdk-example-stack.ts` и добавьте следующий код для создания нового ключа KMS:

import * as cdk from '@aws-cdk/core';
import * as kms from '@aws-cdk/aws-kms';

export class KmsCdkExampleStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    new kms.Key(this, 'MyKey', {
      enableKeyRotation: true,
    });
  }
}

Это создаст новый ключ KMS с включенной ротацией ключей.

Шаг 4. Разверните стек

Прежде чем мы сможем развернуть стек, нам нужно загрузить нашу среду AWS:

cdk bootstrap

После начальной загрузки мы можем развернуть стек:

cdk deploy

Шаг 5. Проверьте ключ KMS

После развертывания стека мы можем протестировать ключ KMS, зашифровав и расшифровав некоторые данные с помощью AWS SDK:

const AWS = require('aws-sdk');

const kms = new AWS.KMS();

const plaintext = 'my secret data';

kms.encrypt({ KeyId: 'MyKey', Plaintext: plaintext }, (err, data) => {
  if (err) console.log(err, err.stack);
  else {
    const ciphertext = data.CiphertextBlob;

    kms.decrypt({ CiphertextBlob: ciphertext }, (err, data) => {
      if (err) console.log(err, err.stack);
      else console.log(data.Plaintext.toString());
    });
  }
});

Это зашифрует «открытый текст» с помощью нашего ключа KMS, а затем расшифрует «зашифрованный текст», чтобы получить «открытый текст».

Заключение

В этом руководстве мы рассмотрели пример создания ключа KMS с помощью AWS CDK. Мы также протестировали ключ, зашифровав и расшифровав некоторые данные. AWS CDK — это мощный инструмент для определения облачной инфраструктуры в коде и управления ею с помощью AWS CloudFormation.