Docs Menu
Docs Home
/
MongoDB Atlas
/ /

AWS KMS を使用したカスタマーキーの管理

項目一覧

  • 必要なアクセス権
  • AWS KMS を使用したカスタマー マネージド キーの有効化
  • 前提条件
  • プロジェクトの暗号化のキーへのロールベース アクセスの有効化
  • プロジェクトの暗号化のキーへのロールベース アクセスへの切り替え
  • Atlas クラスターのカスタマー キー管理の有効化
  • AWS CMK のローテーション
  • MongoDB マスターキー - MongoDB の責任
  • AWS CMK - お客様の責任
  • 手順
  • 停止時の AWS KMS リージョンの再設定
  • 手順
  • 関連トピック

注意

2021 年 1 月 26 日のリリース以降、カスタマー キー管理のために AWS KMS 暗号化のキーへのアクセスを管理するには、IAM ユーザーではなく AWS IAM ロールを使用する必要があります。

AWS IAMユーザーからロールに移行するときは、新しいロールが古い AWS CMK にアクセスできることを確認します。

重要

サーバーレスインスタンスで使用できない機能

サーバーレスインスタンスは現時点ではこの機能をサポートしていません。詳細については、「サーバーレスインスタンスの制限」を参照してください。

AWS IAM ロール を使用して AWS KMS キー(保管時の暗号化用)にアクセスできるよう、Atlas プロジェクトを構成できます。保管時の暗号化をプロジェクトで有効にするときに、既存のロールを使用するか、新しいロールを作成できます。

このページでは、役割ベースのアクセス用に MongoDB Atlas プロジェクトでカスタマー キー管理を設定する方法について説明します。

新規または既存の Atlas プロジェクトで保管時の暗号化をまだ有効にしていない場合は、「 プロジェクトの暗号化のキーへのロールベース アクセスの有効化 」の手順に従って、Atlas プロジェクトの保管時の暗号化を有効にします。保管時の暗号化をすでに有効にし、暗号化のキーへの資格情報ベースのアクセスを構成している Atlas プロジェクトがある場合は、「プロジェクトの暗号化のキーへのロールベース アクセスへの切り替え」手順に従って、暗号化のキーへのロールベース アクセスに切り替えます。

Atlas プロジェクトのカスタマー キー マネジメントを構成してから、そのプロジェクトのクラスターで有効にします。

Tip

以下も参照してください。

カスタマー キー マネジメントを設定するには、プロジェクトへの Project Owner アクセス権が必要です。

Organization Owner アクセス権を持つユーザーは、自分自身を Project Owner としてプロジェクトに追加する必要があります。

Atlas では、エンベロープ暗号化というプロセスに沿ってカスタマー キーを管理します。このプロセスでは、あるキーを別のキーで暗号化することによって複数の暗号化レイヤーが作成されます。カスタマー キー管理を有効にするために、MongoDB Atlas では以下の暗号化キーが使用されます。

Customer-Managed Key (CMK)

カスタマー管理キーは、ユーザーが AWS KMS で作成、所有、管理する暗号化キーです。AWS KMS でCMK を作成し、プロジェクトレベルで Atlas に接続します。AWS KMS で使用される CMK について詳しくは、AWS KMS ドキュメントを参照してください。

Atlas はこのキーを MongoDB マスター キーの暗号化にのみ使用します。

MongoDB Master Key

Atlasマスター キーを作成しMongoDB 。 MongoDB マスターキーは、MongoDB Server がデータベースごとに暗号化されたキーを暗号化するために使用する暗号化キーです。 Atlas は、キーの暗号化されたコピーをローカルに保存します。

このキーは CMK で暗号化され、データベースごとに暗号化されたキーを暗号化します。

Per-Database Encryption Key

MongoDB Atlas の各ノードは、クラスター内のデータベースごとに暗号化のキーも作成します。Atlas はこれらのキーを使用して、WiredTiger を介してデータの読み取りと書き込みを行い、WiredTiger はこれらのキーを暗号化して保存します。

このキーは、MongoDB マスターキーで暗号化されます。

ノードが 3 つのレプリカ セットの次の暗号化階層を検討してみましょう。Atlas は、AWS KMS のCMKを使用して、クラスター内の各ノードのユニークな MongoDB マスターキーを暗号化します。また、各ノードには 3 つのデータベースが含まれており、それぞれがデータベースごとに固有の暗号化キーで暗号化されています。クラスターが起動すると、Atlas は Amazon Web Services の KMS のCMKを使用して MongoDB マスターキーを復号化し、これをMongoDB Serverに提供します。

注意

Atlas の CMK へのアクセスを取り消すと、Atlas はクラスター内のノードをシャットダウンし、 CMK へのアクセスを復元するまでデータにアクセスできなくなります。

AWS KMS と Atlas を使用した CMK ワークフローの図
クリックして拡大します

MongoDB プロジェクトでAWS KMS を使用してカスタマー マネージド キーを有効にするには、次の手順を実行する必要があります。

  • 対称 AWS KMS キーを用意します。キーの作成方法について詳しくは、AWS ドキュメントで「キーの作成」を参照してください。

    注意

    地域的な障害の発生に備えて回復力を確保するには、KMS キーを マルチリージョン キーとして構成します。

    詳細については、「停止時のAmazon Web Services KMS リージョンの再設定」を参照してください。

  • 十分な権限を持つ AWS IAM ロールを持っているようにします。Atlas には、キーを使用して次のアクションを実行する権限が必要です。

    注意

    AWS KMS キーを作成した IAM ロールではなく、別の AWS アカウントの AWS IAM ロールで AWS KMS キーを使用する場合は、十分な権限があることを確認してください。

    • 外部 AWS アカウントを含めるには、 AWS KMS キーの下にキー ポリシー ステートメントを追加します。

    • 外部 AWS アカウントの IAM ロールに IAM インライン ポリシーを追加します。

    IAM ロールと CMK について詳しくは、AWS ドキュメントを参照してください。

    上記の権限を確認したら、通常の手順に従って Atlas で KMS 設定を構成できますが、次の例外があります。

    • AWS KMS キーの完全な ARN を指定する必要があります(例:arn:aws:kms:eu-west-2:111122223333:key/12345678-1234-1234-1234-12345678)を入力します。マスター キー ID(例: 12345678-1234-1234-1234-12345678AWS KMS キー ID フィールドに入力しないでください。

    IAM ロールの作成方法について詳しくは、 AWS ドキュメントで「IAMロール」を参照してください。

    Atlas は、保存時の暗号化が有効になっているプロジェクト内のすべてのクラスターに対して同じ IAM ロールと Amazon Web Services KMS キー設定を使用します。

  • AWS KMS の設定で必要な場合、KMS と通信できるように、Atlas の IP アドレスおよびパブリック IP アドレス、またはクラスターノードの DNS ホスト名からのアクセスを許可します。マネージドIAMロールポリシー にIPアドレスを含める必要があります IPアドレス条件演算子 を設定することによって ポリシー文書に記載されています。ノードの IP アドレスが変更された場合は、接続の中断を回避するために構成を更新する必要があります。

1
  1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Security見出しの下のAdvancedをクリックします。

    詳細ページが表示されます。

2
3

保存時の暗号化に使用する Amazon Web Services KMS キーにアクセスするための新しいAmazon Web Services IAM ロールを作成するには、「Amazon Web Services CLI を使用した新しいロールの作成 」の手順に従います。承認する既存の Amazon Web Services IAM ロールがある場合は、「既存のロールへの信頼関係の追加」手順に従ってください。

4

注意

このポリシーステートメントにより、 MongoDBのAmazon Web Services Principal は、暗号化および復号化操作にカスタマーのKMSキーを使用できるようになります。 Atlas Principal は秘密ではなく、すべての Atlas カスタマー間で使用されます。 これは、高度に制限された、目的限定のAmazon Web Servicesアカウントであり、IAM ユーザー以外のリソースは含まれません。 ポリシー ステートメント内のExternalIdは Atlas プロジェクトごとに一意ですが、秘密ではありません。 ExternalIdは、クロスコンテキスト(混乱した代理)への脆弱性の可能性を軽減するために使用されます。 こちら で説明されているように、Atlas が共通のプリンシパルを使用してすべてのカスタマーのキーにアクセスする方法を、アクセス パターンとして Amazon は推奨して います。

保管時の暗号化のアクセス ポリシーは次のようになります。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:Encrypt",
"kms:DescribeKey"
],
"Resource": [
"arn:aws:kms:us-east-1:123456789012:key/12x345y6-7z89-0a12-3456-xyz123456789"
]
}
]
}
5
6
  1. AWS IAM role ドロップダウン リストから割り当てるロールを選択します。

  2. Customer Master Key ID フィールドに暗号化のキーを指定します。

  3. 暗号化のキーの Amazon Web Services リージョンを選択します。

1

API エンドポイントを使用して、新しいAmazon Web Services IAM ロールを作成します。Atlas は、Amazon Web Services アカウントの認証にこのロールを使用します。

返されたフィールド値 atlasAWSAccountArnatlasAssumedRoleExternalId を、次の手順で使用するために保存しておきます。

2
  1. Amazon Web Servicesマネジメント コンソールにログインします。

  2. Identity and Access Management (IAM)サービスに移動します。

  3. 左側のナビゲーションからRolesを選択します。

  4. ロールのリストから Atlas アクセスに使用する既存の IAM ロールをクリックします。

  5. Trust Relationships タブを選択します。

  6. Edit trust relationshipボタンをクリックします。

  7. Policy Documentを編集します。 次のコンテンツを持つ新しいStatementオブジェクトを追加します。

    注意

    このポリシーステートメントにより、 MongoDBのAmazon Web Services Principal は、暗号化および復号化操作にカスタマーのKMSキーを使用できるようになります。 Atlas Principal は秘密ではなく、すべての Atlas カスタマー間で使用されます。 これは、高度に制限された、目的限定のAmazon Web Servicesアカウントであり、IAM ユーザー以外のリソースは含まれません。 ポリシー ステートメント内のExternalIdは Atlas プロジェクトごとに一意ですが、秘密ではありません。 ExternalIdは、クロスコンテキスト(混乱した代理)への脆弱性の可能性を軽減するために使用されます。 こちら で説明されているように、Atlas が共通のプリンシパルを使用してすべてのカスタマーのキーにアクセスする方法を、アクセス パターンとして Amazon は推奨して います。

    注意

    強調表示された行を、ステップ 1 の API 呼び出しから返された値に置き換えます。

    {
    "Version": "2020-03-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Principal": {
    "AWS": "<atlasAWSAccountArn>"
    },
    "Action:" "sts:AssumeRole",
    "Condition": {
    "StringEquals": {
    "sts:ExternalId": "<atlasAssumedRoleExternalId>"
    }
    }
    }
    ]
    }
  8. Update Trust Policyボタンをクリックします。

3

APIエンドポイントを使用して、新しい IAM 引き受けロール ARN を承認および構成します。API 呼び出しに成功した場合は、 Amazon Web Services を使用する Atlas サービスを構成するときに roleId 値を使用できます。

4

承認された Amazon Web Services IAM ロール ID を使用して awsKms.roleId フィールドを更新するには、encryptionAtRest API エンドポイントに PATCH リクエストを送信します。

curl --user "{public key}:{private key}" --digest \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--include \
--request PATCH \
"https://cloud.mongodb.com/api/atlas/v1.0/groups/{groupId}/encryptionAtRest?pretty=true&envelope=true" \
--data '
{
"awsKms": {
"enabled": true,
"roleId": "<roleId>",
"customerMasterKeyID": "<master-key-id>",
"region": "<aws-region>"
}
}'

重要

暗号化キーをロールベースのアクセスに切り替えた場合、そのプロジェクトでは、ロールベースのアクセス構成を取り消して、暗号化のキーの認証情報ベースのアクセスに戻すことはできません。

1
  1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Security見出しの下のAdvancedをクリックします。

    詳細ページが表示されます。

2
3
4

保存時の暗号化に使用する Amazon Web Services KMS キーにアクセスするための新しいAmazon Web Services IAM ロールを作成するには、「Amazon Web Services CLI を使用した新しいロールの作成 」の手順に従います。承認する既存の Amazon Web Services IAM ロールがある場合は、「既存のロールへの信頼関係の追加」手順に従ってください。

Atlas 管理 API を使用して暗号化のキー マネジメントを更新するには、上記の手順と同じ手順を使用します。

プロジェクトの暗号化のキーへのロールベース アクセスを有効にした後、暗号化するデータを含む各 Atlas クラスターに対してカスタマー キー マネジメントを有効にする必要があります。

注意

該当プロジェクト内のクラスターのカスタマー キー管理を有効にするには、Project Owner ロールが必要です。

新しいクラスターの場合は、クラスターを作成するときに 独自の暗号化キーの管理設定を [Yes] に切り替えます。

既存クラスターの場合:

1
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。

  3. Clusters ページがまだ表示されていない場合は、サイドバーの Database をクリックします。

    [ Clusters (クラスター) ] ページが表示されます。

2

暗号化するデータを含むクラスターで、クリックします、次にEdit Configurationを選択します。

3
  1. [Additional Settings] パネルを展開します。

  2. Manage your own encryption keys 設定を Yes に切り替えます。

  3. クラスターのRequire Private Networking設定のステータスを確認します。

    プロジェクト レベルで Atlas のCMKを使用した保管時の暗号化(オーバープライベート ネットワーク)を構成した場合、ステータスはActiveです。 プロジェクトにプライベートエンドポイント接続を構成していない場合、ステータスはInactiveです。

4
  1. [Review Changes] をクリックします。

  2. 変更内容を確認し、[Apply Changes] をクリックしてクラスターをアップデートします。

注意

独自のクラウドプロバイダー KMS Bluetooth を使用する場合、Atlas は MongoDB マスター キーを 90 日ごとに自動的にローテーションします。これらのキーは順次ローテーションされるため、プロセスでデータを書き換える必要はありません。

Atlas は、Amazon Web Services が提供する保存時の暗号化に使用される Amazon Web Services CMK を自動的にローテーションしません

AtlasalertAmazon Web Servicesベストプラクティスとして、 90Atlasプロジェクトで 保管時の 暗号化を有効 にする 場合、 CMK のローテーションを促すため、 はデフォルトで 日ごとに作成します。このアラートの期間は構成により変更できます。

AWS CMK のローテーションを手動で、または AWS KMS インスタンスの構成により自動的に行えますAWS CMK の自動ローテーションを構成する場合、デフォルトのローテーション期間は約 365 日です。

Amazon Web Services で自動 CMK ローテーションをすでに設定していて、90 日ごとに CMK をローテーションするための Atlas アラートを受信したくない場合は、デフォルトのアラート期間を 365 日より長く変更するか、アラートを無効にできます。

このページでは、Atlas で新しいキーを作成し、CMK ID を更新して Atlas プロジェクト CMK をローテーションする方法について説明します。このキーローテーションの方法は、 Amazon Web Services KMSの自動 CMK ローテーションと比較して、ローテーション期間のより細かい制御をサポートします。

重要

保管時の暗号化によるクラウドバックアップ

Atlas では、保管時の暗号化クラスターのバックアップを使用するクラスターの場合、スナップショットの取得時点でプロジェクトの CMKAWS IAM ユーザー認証情報を使用し、スナップショットのデータファイルを自動的に暗号化します。これにより、すべての Atlas ストレージおよびスナップショットのボリュームに適用されている既存の暗号化に暗号化レイヤーが追加されます。

Atlas は、ローテーション後に新しい CMK を使用してスナップショットを再暗号化しません 。プロジェクト内のすべてのバックアップ対応クラスターで、その CMK をまだ使用しているスナップショットがあるかどうかを確認するまでは、古い CMK削除しないでください。Atlas は、バックアップの予定、保持、オンデマンド スナップショットに従ってバックアップを削除します。Atlas が特定の CMKに依存するすべてのスナップショットを削除した後、その CMK を安全に削除できます。

1
  1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Security見出しの下のAdvancedをクリックします。

    詳細ページが表示されます。

2
3
  1. 次の情報を入力します。

    フィールド
    アクション
    AWS IAM role

    KMS キーへのアクセス権をすでに持っている既存の Amazon Web Services IAM ロールを選択するか、新しいロールを承認して、次の権限でこのロールに KMS キーへのアクセス権を付与します。

    詳細については、「プロジェクトの暗号化キーへのロールベースのアクセス」を参照してください。

    Customer Master Key ID
    Amazon Web Services カスタマー マスター キー ID を入力します。
    Customer Master Key Region

    Amazon Web Services CMK を作成した Amazon Web Services リージョンを選択します。

    AtlasAmazon Web Servicesには、 Amazon Web Services KMSをサポートする Amazon リージョンのみがリストされます。

  2. [Save] をクリックします。

Atlas は、 CMK ローテーション プロセス中に Atlas コンソールにバナーを表示します。変更がデプロイされるまで、 CMK を削除したり無効にしたりしないでください。

リージョン停止時は、Amazon Web Services KMS リージョンが利用できなくなる可能性があります。カスタマー キー マネジメントを使用した保管時の暗号化を有効にした場合、少なくとも 1 つのノードが使用可能な状態であれば暗号化および復号化操作を実行できます。しかし、すべてのノードが利用できなくなると、暗号操作を実行できなくなります。停止時にノードが再起動すると、そのノードは利用できなくなります。

使用できないノードを正常な状態に戻すには、現在の AWS KMS リージョンを使用可能なリージョンに再構成します。KMS リージョンを変更するには、AWS KMSキーがマルチリージョン キーである必要があります。マルチリージョン キーを作成するには、AWS ドキュメントを参照してください。

注意

単一リージョン キーを複数リージョン キーに変換することはできません。

Amazon Web Services KMS リージョンを再設定するには、Atlas で次の手順を実行します。

1
  1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Security見出しの下のAdvancedをクリックします。

    詳細ページが表示されます。

2
3

Atlas がデータを再暗号化しないようにするには、 AWS IAM roleCustomer Master Key ID が既存の認証情報を反映していることを確認します。

4

マルチリージョン キーを設定した別の Amazon Web Services リージョンを選択します。

5

戻る

保管時の暗号化