このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
EKS オートモードでカスタマーマネージド KMS キー使用した EBS ボリュームの暗号化を有効にする
カスタマーマネージド KMS キーを使用すると、EKS オートモードのインスタンスのエフェメラルルートボリュームを暗号化することができます。
Amazon EKS オートモードは、Kubernetes クラスターの暗号化された EBS ボリュームを管理するときに、サービスリンクロールを使用して他の AWS サービスにアクセス許可を委任します。このトピックでは、EKS オートモードの Amazon EBS 暗号化のカスタマーマネージドキーを指定するときに必要になる、キーポリシーの設定方法について解説します。
考慮事項:
-
EKS オートモードでは、デフォルトの AWS マネージドキーを使用してアカウントにある暗号化されたボリュームを保護する場合、追加の承認は不要です。
-
このトピックでは、EC2 インスタンスのルートボリュームである、エフェメラルボリュームを暗号化する方法について取り上げます。ワークロードに使用するデータボリュームの暗号化の方法については、「ストレージクラスを作成する」を参照してください。
概要
以下の AWS KMS キーは、EKS オートモードでインスタンスを起動するときに、Amazon EBS ルートボリュームの暗号化に使用できます。
-
AWS マネージドキー – Amazon EBS が作成、所有、管理するアカウント内の暗号化キーです。これは、新しいアカウントのデフォルトの暗号化キーです。
-
カスタマーマネージド型キー – お客様が作成、所有、および管理するカスタム暗号化キー。
注記
KMS キーは対称である必要があります。Amazon EBS は非対称カスタマー管理キーをサポートしていません。
ステップ 1: キーポリシーを設定する
KMS キーには、カスタマーマネージドキーで暗号化された Amazon EBS ボリュームを使用してインスタンスを起動することを EKS オートモードに許可する、キーポリシーが必要です。
キーポリシーは次の構造で設定します。
注記
このポリシーには EKS オートモードのアクセス許可しか含まれていません。他の ID でキーを使用したり許可を管理したりする必要がある場合、このキーポリシーに追加のアクセス許可が必要になる可能性があります。
{ "Version":"2012-10-17", "Id": "MyKeyPolicy", "Statement": [ { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/ClusterServiceRole" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/ClusterServiceRole" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } } ] }
<account-id> を、現在お使いの AWS アカウント ID に置き換えます。
キーポリシーを設定する場合:
-
ClusterServiceRoleには、暗号化のオペレーションに KMS キーを使用するために必要な、IAM アクセス許可が含まれている必要があります。 -
kms:GrantIsForAWSResource条件によって、AWS サービスに対してのみ許可を作成することができます。
ステップ 2: カスタマーマネージドキーを使用して NodeClass を設定する
キーポリシーを設定したら、EKS オートモード NodeClass 設定で KMS キーを参照します。
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: my-node-class spec: # Insert existing configuration ephemeralStorage: size: "80Gi" # Range: 1-59000Gi or 1-64000G or 1-58Ti or 1-64T iops: 3000 # Range: 3000-16000 throughput: 125 # Range: 125-1000 # KMS key for encryption kmsKeyID: "arn:aws:kms:<region>:<account-id>:key/<key-id>"
プレースホルダーの値を実際の値にそれぞれ置き換えます。
-
<region>は現在の AWS リージョンに -
<account-id>はご自身の AWS アカウント ID に -
<key-id>はご自身の KMS キー ID に
KMS キーは以下のいずれかの形式を使用して指定することができます。
-
KMS キー ID:
1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d -
KMS キー ARN:
arn:aws:kms:us-west-2:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d -
キーエイリアス名:
alias/eks-auto-mode-key -
キーエイリアス ARN:
arn:aws:kms:us-west-2:111122223333:alias/eks-auto-mode-key
kubectl を使用して NodeClass 設定を適用します。
kubectl apply -f nodeclass.yaml
関連リソース
-
詳細については、「AWS Key Management Service デベロッパーガイド」を参照してください。