助け合いフォーラム
AWS ソリューションアーキテクト - アソシエイト(SAA-C03)
問題ID : 30481
問題を開く
AWS Key Management Service(KMS)におけるエンベロープ暗号化について正しく述べているものはどれか。(2つ選択)
正解
データを暗号化するデータキーと、データキーを暗号化するKMSキーの二種類の鍵で運用する
データキーは暗号化する対象の数だけ作成する
解説
AWS KMSでは「KMSキー」「データキー」と呼ばれる2種類の鍵を使用してデータの暗号化および復号を行います。このように二段階で鍵を保護する方式を「エンベロープ暗号化(Envelope Encryption)」といいます。KMSでは、KMSキーとデータキーという2段階で鍵を管理することによってセキュリティの向上を図っています。
「KMSキー」はデータキーを暗号化する際に使用し、「データキー」はデータを暗号化する際に使用します。
データキーは通常、暗号化を行う対象のサービスごとに作成します。これにより、1つのデータキーが漏洩したとしても他のデータキーで暗号化されたサービスへは影響しません。また、データキーをKMSキーで暗号化することによって、運用時に頻繁に使用されるデータキーを保護します。
以上より正解は
・データを暗号化するデータキーと、データキーを暗号化するKMSキーの二種類の鍵で運用する
・データキーは暗号化する対象の数だけ作成する
です。
その他の選択肢については以下の通りです。
・データを暗号化するKMSキーと、KMSキーを暗号化するデータキーの二種類の鍵で運用する
データを暗号化する鍵はデータキーで、データキーを暗号化する鍵がKMSキーですので誤りです。
・データキーが漏洩した場合、AWS上に保存したすべての暗号化データが漏洩する危険がある
データキーは暗号化する対象ごとに作成します。例えばS3バケットを暗号化したデータキーが漏洩しても、異なるデータキーで暗号化されたEBSボリュームへは影響が及ばないようになっています。したがって、誤りです。
・KMSキーの数はデータキーと同じ数だけ作成する
KMSキーは一つの鍵で運用されますので誤りです。
「KMSキー」はデータキーを暗号化する際に使用し、「データキー」はデータを暗号化する際に使用します。
データキーは通常、暗号化を行う対象のサービスごとに作成します。これにより、1つのデータキーが漏洩したとしても他のデータキーで暗号化されたサービスへは影響しません。また、データキーをKMSキーで暗号化することによって、運用時に頻繁に使用されるデータキーを保護します。
以上より正解は
・データを暗号化するデータキーと、データキーを暗号化するKMSキーの二種類の鍵で運用する
・データキーは暗号化する対象の数だけ作成する
です。
その他の選択肢については以下の通りです。
・データを暗号化するKMSキーと、KMSキーを暗号化するデータキーの二種類の鍵で運用する
データを暗号化する鍵はデータキーで、データキーを暗号化する鍵がKMSキーですので誤りです。
・データキーが漏洩した場合、AWS上に保存したすべての暗号化データが漏洩する危険がある
データキーは暗号化する対象ごとに作成します。例えばS3バケットを暗号化したデータキーが漏洩しても、異なるデータキーで暗号化されたEBSボリュームへは影響が及ばないようになっています。したがって、誤りです。
・KMSキーの数はデータキーと同じ数だけ作成する
KMSキーは一つの鍵で運用されますので誤りです。
参考
【暗号化】
AWSではストレージやデータベースなどに様々なデータを格納できます。そのため、公開範囲や権限設定を誤った場合、インターネット上の不特定多数から意図せずデータにアクセスされてしまう事故が起こりえます。万が一、事故が発生してもデータの中身が読み取れないように、特に機密性の高いデータは暗号化しておくことが求められます。データを扱うサービス(Amazon S3やAmazon Redshiftなど)では暗号化に対応しています。
暗号化されたデータは、第三者が不正に入手しても復号(暗号化されたデータを元の状態に戻すこと)ができないため、正しく読み取れず意味をなさないデータとなります。データを暗号化することにより、情報が漏洩した場合でも被害を抑えることができます。
暗号化および復号する際には「鍵(キー)」を使用します。
鍵はデータの暗号化・復号に使用するものですから、他者に漏洩するようなことがあってはなりません。また、漏洩したケースを想定して定期的に更新する(ローテーション)など管理も厳重にされなければなりません。
AWSでは、データの暗号化および復号に用いる鍵を管理するサービスとしてAWS Key Management ServiceやAWS CloudHSMが提供されています。
【AWS Key Management Service(KMS)】
AWS Key Management Service(KMS)は、暗号化に使用する鍵(キー)を作成・管理するサービスです。通常は、暗号化を行う対象のサービス(Amazon S3やAmazon EBS、Amazon Redshiftなど)と連携して利用します。
なお、KMSはAWS CloudTrailと連携しており、鍵の使用ログ(いつどのサービスで鍵が使用されたか)が記録されるため、鍵の利用状況を監査することができます。
■暗号化の仕組み
KMSでは「KMSキー」「データキー」と呼ばれる2種類の鍵を使用してデータの暗号化および復号を行います。このように二段階で鍵を保護する方式を「エンベロープ暗号化(Envelope Encryption)」といいます。KMSでは、KMSキーとデータキーという2段階で鍵を管理することによってセキュリティの向上を図っています。
「KMSキー」はデータキーを暗号化する際に使用し、「データキー」はデータを暗号化する際に使用します。
データキーは通常、暗号化を行う対象のサービスごとに作成します。これにより、1つのデータキーが漏洩したとしても他のデータキーで暗号化されたサービスへは影響しません。また、データキーをKMSキーで暗号化することによって、運用時に頻繁に使用されるデータキーを保護します。
・KMSキーの種類
KMSキーには「AWSマネージド型」と「カスタマーマネージド型」があります。
通常、AWSによって作成・管理されるものは「AWSマネージド型」であり、ユーザーは削除できません。AWSマネージド型の鍵は、連携したEBSやRedshiftなどのサービスで暗号化を利用したタイミングでAWSが作成します。
一方、カスタマーマネージド型のKMSキーはユーザーが作成・削除、および管理を行います。ただし作成した鍵を長期間利用するのはセキュリティ上危険なため、KMSでは鍵の自動ローテーション(定期的な更新)をサポートしています。
・AWS Secrets Managerとの連携
Secrets Managerは、データベースなどにアクセスする際のシークレット(ログイン時の認証情報など)を管理するサービスです。アプリケーションなどからAWSリソースへアクセスする際にSecrets Managerからシークレットを取得することにより、ログイン情報をアプリケーションにハードコーディングしたり平文で入力しておく必要がありません。また、シークレットは定期的に更新(ローテーション)されたりバージョン管理も行われます。
KMSと連携すると、シークレットを保護するためにデータキーが使用されます。ローテーションが行われるたびデータキーも新しいものが自動的に生成されるため、高いセキュリティの認証を実現できます。
■キーポリシー
キーポリシーは、KMSキーへ適用するリソースベースのポリシーです。鍵に対して、IAMユーザーまたはIAMロール、他のAWSアカウントからの操作可能な権限を設定します。
・鍵の使用と鍵の共有
鍵の作成者とは異なるIAMユーザーやIAMロールが、鍵を使って暗号化や復号をしたい場合、キーユーザーとして使用者を追加できます。
また、別のAWSアカウントで鍵を使用したい場合は、対象のアカウントと鍵を共有します(クロスアカウント)。
暗号化されたAMIやデータベースのスナップショットなどを他のアカウントと共有する際に利用します。
なお、使用者の追加や共有ができる鍵はカスタマーマネージド型のKMSキーのみです。AWSマネージド型の鍵はキーポリシーを編集できないため他アカウントと共有できません。
・インラインポリシー
IAMのポリシーと同様に、キーポリシーはインラインポリシーでも定義できます。
例えば、KMSキーの作成時、作成者にはデフォルトで以下のようなIAMポリシーが付与されます。
※インラインポリシーの記述形式については、分野「IAM」を参照してください。
本例では、「kms:*」により、鍵を使用した暗号化や復号、鍵の削除など、鍵の使用と管理に関するすべての操作が行えるようになっています。
キーユーザーを追加したり、他のAWSアカウントと鍵を共有するとキーポリシーが更新されます。
キーポリシーでは、例えば、ユーザーAが暗号化したリソースをユーザーBが復号したい場合には"kms:Decrypt"を設定するなど、細かな権限設定を行えます。IAMのポリシーと同様に、最小の権限で運用することが望ましいです。
なお、ユーザーやリソースに対して鍵の利用を許可する際は、キーポリシーだけでなく、IAMのポリシーでも同じように権限を設定できます。
■サーバー側の暗号化とクライアント側の暗号化
データの暗号化・復号はサーバーまたはクライアントのいずれかで行われます。
サーバー側の暗号化(Server-Side Encryption:SSE)は、AWS(サービス提供側=サーバー側)にデータが保存されるタイミングで暗号化が行われ、ユーザーがデータを取り出す際もサーバー側が復号して渡します。
一方、クライアント側の暗号化は、サーバーへデータを送信する前にクライアント側で暗号化を行い、サーバー側では受け取ったデータをそのまま保存します。また、データの復号もクライアント側で行います。
AWS側で暗号化が行われる場合はほとんどがサーバー側の暗号化です。クライアント側の暗号化は、通信回線のセキュリティに不安があるなどユーザーが自主的に暗号化したいケースで使用されます。また、クライアント側の暗号化は、暗号化および復号をユーザー側で行うため、鍵の利用状況のチェックや監査などもユーザー自身が行う必要があります。なお、クライアント側の暗号化を行うにはAWS SDK(ソフトウェア開発キット)を使用します。
※Amazon S3の暗号化方式(SSE-S3、SSE-KMSなど)については、分野「S3」の「【S3のデータ暗号化方法】」を参照してください。
【AWS CloudHSM】
AWS CloudHSMでは、専用のハードウェアデバイスを用いて暗号化鍵を生成・管理します。貸し出されるハードウェアは世界的な暗号化ハードウェアの規格(FIPS 140-2 のレベル 3)で認証済みのため、信頼性の高さが強みです。
なお、「CloudHSM」のHSM(Hardware Security Module)とは、データセキュリティを高めるための暗号鍵を保護しつつ運用するデバイスのことです。
KMSでは鍵の管理はAWS側で行われるのに対して(フルマネージド)、CloudHSMでは鍵の生成や保管・削除などのライフサイクル管理はユーザー自身が行います。運用面においても、CloudHSMは他のAWSユーザーと分離するためにAmazon VPC内にプロビジョニングする必要があるなど、KMSよりもセキュアな運用が求められます。
なお、CloudHSMでは専用のハードウェアを使用する分、KMSと比べると利用料金が高価に設定されています。
法令や規制等の要件で、認定を受けたハードウェアで暗号化鍵を管理する必要があるようなケースでは、CloudHSMを使用します。
AWSではストレージやデータベースなどに様々なデータを格納できます。そのため、公開範囲や権限設定を誤った場合、インターネット上の不特定多数から意図せずデータにアクセスされてしまう事故が起こりえます。万が一、事故が発生してもデータの中身が読み取れないように、特に機密性の高いデータは暗号化しておくことが求められます。データを扱うサービス(Amazon S3やAmazon Redshiftなど)では暗号化に対応しています。
暗号化されたデータは、第三者が不正に入手しても復号(暗号化されたデータを元の状態に戻すこと)ができないため、正しく読み取れず意味をなさないデータとなります。データを暗号化することにより、情報が漏洩した場合でも被害を抑えることができます。
暗号化および復号する際には「鍵(キー)」を使用します。
鍵はデータの暗号化・復号に使用するものですから、他者に漏洩するようなことがあってはなりません。また、漏洩したケースを想定して定期的に更新する(ローテーション)など管理も厳重にされなければなりません。
AWSでは、データの暗号化および復号に用いる鍵を管理するサービスとしてAWS Key Management ServiceやAWS CloudHSMが提供されています。
【AWS Key Management Service(KMS)】
AWS Key Management Service(KMS)は、暗号化に使用する鍵(キー)を作成・管理するサービスです。通常は、暗号化を行う対象のサービス(Amazon S3やAmazon EBS、Amazon Redshiftなど)と連携して利用します。
なお、KMSはAWS CloudTrailと連携しており、鍵の使用ログ(いつどのサービスで鍵が使用されたか)が記録されるため、鍵の利用状況を監査することができます。
■暗号化の仕組み
KMSでは「KMSキー」「データキー」と呼ばれる2種類の鍵を使用してデータの暗号化および復号を行います。このように二段階で鍵を保護する方式を「エンベロープ暗号化(Envelope Encryption)」といいます。KMSでは、KMSキーとデータキーという2段階で鍵を管理することによってセキュリティの向上を図っています。
「KMSキー」はデータキーを暗号化する際に使用し、「データキー」はデータを暗号化する際に使用します。
データキーは通常、暗号化を行う対象のサービスごとに作成します。これにより、1つのデータキーが漏洩したとしても他のデータキーで暗号化されたサービスへは影響しません。また、データキーをKMSキーで暗号化することによって、運用時に頻繁に使用されるデータキーを保護します。
・KMSキーの種類
KMSキーには「AWSマネージド型」と「カスタマーマネージド型」があります。
通常、AWSによって作成・管理されるものは「AWSマネージド型」であり、ユーザーは削除できません。AWSマネージド型の鍵は、連携したEBSやRedshiftなどのサービスで暗号化を利用したタイミングでAWSが作成します。
一方、カスタマーマネージド型のKMSキーはユーザーが作成・削除、および管理を行います。ただし作成した鍵を長期間利用するのはセキュリティ上危険なため、KMSでは鍵の自動ローテーション(定期的な更新)をサポートしています。
・AWS Secrets Managerとの連携
Secrets Managerは、データベースなどにアクセスする際のシークレット(ログイン時の認証情報など)を管理するサービスです。アプリケーションなどからAWSリソースへアクセスする際にSecrets Managerからシークレットを取得することにより、ログイン情報をアプリケーションにハードコーディングしたり平文で入力しておく必要がありません。また、シークレットは定期的に更新(ローテーション)されたりバージョン管理も行われます。
KMSと連携すると、シークレットを保護するためにデータキーが使用されます。ローテーションが行われるたびデータキーも新しいものが自動的に生成されるため、高いセキュリティの認証を実現できます。
■キーポリシー
キーポリシーは、KMSキーへ適用するリソースベースのポリシーです。鍵に対して、IAMユーザーまたはIAMロール、他のAWSアカウントからの操作可能な権限を設定します。
・鍵の使用と鍵の共有
鍵の作成者とは異なるIAMユーザーやIAMロールが、鍵を使って暗号化や復号をしたい場合、キーユーザーとして使用者を追加できます。
また、別のAWSアカウントで鍵を使用したい場合は、対象のアカウントと鍵を共有します(クロスアカウント)。
暗号化されたAMIやデータベースのスナップショットなどを他のアカウントと共有する際に利用します。
なお、使用者の追加や共有ができる鍵はカスタマーマネージド型のKMSキーのみです。AWSマネージド型の鍵はキーポリシーを編集できないため他アカウントと共有できません。
・インラインポリシー
IAMのポリシーと同様に、キーポリシーはインラインポリシーでも定義できます。
例えば、KMSキーの作成時、作成者にはデフォルトで以下のようなIAMポリシーが付与されます。
※インラインポリシーの記述形式については、分野「IAM」を参照してください。
本例では、「kms:*」により、鍵を使用した暗号化や復号、鍵の削除など、鍵の使用と管理に関するすべての操作が行えるようになっています。
キーユーザーを追加したり、他のAWSアカウントと鍵を共有するとキーポリシーが更新されます。
キーポリシーでは、例えば、ユーザーAが暗号化したリソースをユーザーBが復号したい場合には"kms:Decrypt"を設定するなど、細かな権限設定を行えます。IAMのポリシーと同様に、最小の権限で運用することが望ましいです。
なお、ユーザーやリソースに対して鍵の利用を許可する際は、キーポリシーだけでなく、IAMのポリシーでも同じように権限を設定できます。
■サーバー側の暗号化とクライアント側の暗号化
データの暗号化・復号はサーバーまたはクライアントのいずれかで行われます。
サーバー側の暗号化(Server-Side Encryption:SSE)は、AWS(サービス提供側=サーバー側)にデータが保存されるタイミングで暗号化が行われ、ユーザーがデータを取り出す際もサーバー側が復号して渡します。
一方、クライアント側の暗号化は、サーバーへデータを送信する前にクライアント側で暗号化を行い、サーバー側では受け取ったデータをそのまま保存します。また、データの復号もクライアント側で行います。
AWS側で暗号化が行われる場合はほとんどがサーバー側の暗号化です。クライアント側の暗号化は、通信回線のセキュリティに不安があるなどユーザーが自主的に暗号化したいケースで使用されます。また、クライアント側の暗号化は、暗号化および復号をユーザー側で行うため、鍵の利用状況のチェックや監査などもユーザー自身が行う必要があります。なお、クライアント側の暗号化を行うにはAWS SDK(ソフトウェア開発キット)を使用します。
※Amazon S3の暗号化方式(SSE-S3、SSE-KMSなど)については、分野「S3」の「【S3のデータ暗号化方法】」を参照してください。
【AWS CloudHSM】
AWS CloudHSMでは、専用のハードウェアデバイスを用いて暗号化鍵を生成・管理します。貸し出されるハードウェアは世界的な暗号化ハードウェアの規格(FIPS 140-2 のレベル 3)で認証済みのため、信頼性の高さが強みです。
なお、「CloudHSM」のHSM(Hardware Security Module)とは、データセキュリティを高めるための暗号鍵を保護しつつ運用するデバイスのことです。
KMSでは鍵の管理はAWS側で行われるのに対して(フルマネージド)、CloudHSMでは鍵の生成や保管・削除などのライフサイクル管理はユーザー自身が行います。運用面においても、CloudHSMは他のAWSユーザーと分離するためにAmazon VPC内にプロビジョニングする必要があるなど、KMSよりもセキュアな運用が求められます。
なお、CloudHSMでは専用のハードウェアを使用する分、KMSと比べると利用料金が高価に設定されています。
法令や規制等の要件で、認定を受けたハードウェアで暗号化鍵を管理する必要があるようなケースでは、CloudHSMを使用します。
「KMSキー/データキー」と「CMK/CDK」の表記が混在していました。
投稿日 2022/12/16
細かくて恐縮ですが…
文中は「KMSキー」「データキー」となってますが画像が「CMK」「CDK」と古い呼び方のままになっていました。
スタッフからの返信
この投稿に対して返信しませんか?
s staff_satomi
2022/12/16 00:54
nanasi2424様 ご指摘の点を修正いたしました。 ご報告下さり、誠にありがとうございます。