顧客管理の CMK を使用したボリュームの暗号化

Anthos clusters on AWS は、AWS Key Management Service(KMS)を使用して EBS ボリュームを暗号化します。AWS 1.7 以降の Anthos クラスタでは、顧客管理の暗号鍵(CMK)を使用したボリュームの暗号化がサポートされています。Anthos clusters on AWS バージョン 1.6.x 以下の Anthos クラスタは、AWS Managed Customer Master Keys のみをサポートしています。

このトピックでは、顧客管理の CMK を設定して、ボリュームを暗号化する方法について説明します。顧客管理の CMK を設定しない場合、Anthos clusters on AWS では AWS マネージド CMK がデフォルトで使用されます。

概要

次の Anthos clusters on AWS コンポーネントは、顧客管理の CMK 暗号化ボリュームをサポートします。

  • 踏み台インスタンスのルート ボリューム
  • 管理サービスのルート ボリューム
  • 管理サービスの etcd データ ボリューム
  • ユーザー クラスタ コントロール プレーンのルート ボリューム
  • ユーザー クラスタ コントロール プレーンの etcd データ ボリューム
  • ユーザー クラスタノードのルート ボリューム

管理サービス、クラスタ、ノードプール構成で鍵を指定します。

前提事項

Anthos clusters on AWS ルート ボリューム向けの顧客管理の CMK を使用するには、以下が必要です。

鍵ポリシーを作成する

AWS KMS 鍵には、Anthos clusters on AWS が顧客管理の CMK を使用して暗号化されたボリュームを作成、読み取ることができる鍵ポリシーが必要です。次のセクションでは、ポリシーの例を示します。ポリシーを作成する手順は次のとおりです。

  1. anthos-aws ディレクトリから terraform を使用して、管理サービスの ID を取得します。

    cd anthos-aws
    terraform output cluster_id
    出力には、管理サービス ID が含まれます。次の例の場合、ID は gke-12345abc です。
    terraform output cluster_id
    gke-12345abc
    

  2. 次の内容の AWS KMS 鍵ポリシーを作成します。

    {
        "Version": "2012-10-17",
        "Id": "key-consolepolicy-3",
        "Statement": [
            {
                "Sid": "Enable IAM User Permissions",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::ACCOUNT_NUMBER:root"
                },
                "Action": "kms:*",
                "Resource": "*"
            },
            {
                "Sid": "Allow creating encrypted EBS volumes for EC2 use",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::ACCOUNT_NUMBER:role/gke-CLUSTER_ID-management",
                        "arn:aws:iam::ACCOUNT_NUMBER:user/AWS_USER",
                        "arn:aws:iam::ACCOUNT_NUMBER:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
                    ]
                },
                "Action": [
                    "kms:GenerateDataKeyWithoutPlaintext",
                    "kms:Decrypt"
                ],
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "kms:CallerAccount": "ACCOUNT_NUMBER",
                        "kms:ViaService": "ec2.AWS_REGION.amazonaws.com"
                    }
                }
            },
            {
                "Sid": "Allow attaching encrypted EBS volumes for EC2 Use",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::ACCOUNT_NUMBER:role/CLUSTER_ID-management",
                        "arn:aws:iam::ACCOUNT_NUMBER:role/CLUSTER_ID-controlplane",
                        "arn:aws:iam::ACCOUNT_NUMBER:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
                    ]
                },
                "Action": [
                    "kms:CreateGrant",
                    "kms:ListGrants",
                    "kms:RevokeGrant"
                ],
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "kms:CallerAccount": "ACCOUNT_NUMBER",
                        "kms:ViaService": "ec2.AWS_REGION.amazonaws.com"
                    }
                }
            }
        ]
    }
    

    以下を置き換えます。

    • ACCOUNT_NUMBER: AWS アカウント番号(1234567890 など)。
    • CLUSTER_ID: Anthos clusters on AWS の管理クラスタ ID(gke-12345678 など)。
    • AWS_USER: AWS ユーザー名。
    • AWS_REGION: Anthos clusters on AWS クラスタが実行される AWS リージョン(us-east1 など)。

顧客管理の CMK を使用するようにリソースを構成する

このセクションでは、Anthos clusters on AWS コンポーネントの顧客管理の CMK を構成する方法について説明します。既存のコンポーネントをアップグレードする前に、既存のクラスタで CMK を使用するをご覧ください。

踏み台インスタンスと管理サービス

管理サービスの設定を行う前に、anthos-gke.yaml で、踏み台インスタンスのルート ボリューム、管理サービスのルート ボリューム、管理サービスの etcd データ ボリュームに顧客管理の CMK を構成します。詳細については、既存のインフラストラクチャの統合AWSManagementService のリファレンスをご覧ください。

ユーザー クラスタ コントロール プレーンのボリューム

AWSCluster の定義で、ユーザー クラスタ コントロール プレーンと etcd データ ボリュームに顧客管理の CMK を構成します。詳細については、カスタム ユーザー クラスタの作成をご覧ください。

ユーザー クラスタノードのルート ボリューム

AWSNodePool の定義で、ユーザー クラスタ ノードのルート ボリュームに顧客管理の CMK を構成します。詳細については、カスタム ユーザー クラスタの作成をご覧ください。

既存のクラスタで CMK を使用する

顧客管理の CMK 構成は、次の既存のコンポーネントに追加できます。

  • 踏み台インスタンスのルート ボリューム
  • 管理サービスのルート ボリューム
  • ユーザー クラスタ コントロール プレーンのルート ボリューム
  • ユーザー クラスタノードのルート ボリューム

Anthos clusters on AWS は、アップグレードまたは構成の変更後に、これらのボリュームを再作成します。顧客管理の CMK 構成を既存のコンポーネントに追加するには、Anthos clusters on AWS のアップグレードの手順に沿って操作してください。リソース構成を変更したら、次のフィールドを変更します。

リソース 項目
AWSManagementService spec.rootVolume and spec.bastionHost.rootVolume
AWSCluster spec.controlPlane.rootVolume
AWSNodePool spec.rootVolume

アップグレードが完了すると、Anthos clusters on AWS は、顧客管理の CMK ボリュームがアタッチされた新しいリソースを作成します。

次のステップ