【AWS KMSとは?データ暗号化と通信暗号化の違い・使い方・コード例

AWS SAA


1. AWS KMS(Key Management Service)とは?

AWS KMS(Key Management Service)は、AWS上でデータを安全に暗号化するための鍵(キー)を管理するサービス です。システムのセキュリティを強化するために、データの暗号化は重要です。その鍵を適切に管理し、安全に運用できるようにするのがAWS KMSの役割です。

1.1 AWS KMSの特徴

AWS KMSを使うことで、以下のようなことが可能になります。

暗号鍵の作成・管理

  • AWSが自動的に管理する鍵(AWSマネージドキー)
  • ユーザーが管理するカスタマーマネージドキー(CMK)
  • 外部のキーを持ち込み(AWS CloudHSM)

データの暗号化と復号化

  • S3、RDS、DynamoDB、EBSなどのデータを簡単に暗号化
  • LambdaやEC2でも利用可能

アクセス管理と監査

  • IAMポリシーとKMSポリシーでアクセス制御
  • CloudTrailと統合し、すべての操作をログ記録

定期的な鍵のローテーション

  • セキュリティを強化するため、鍵を自動更新可能

2. データ暗号化と通信暗号化の違い

AWSでは「データ暗号化」と「通信暗号化」の2つのセキュリティ対策が存在します。

2.1 データの暗号化とは?

データ暗号化は、ストレージやデータベースに保存されるデータを暗号化する方法です。保存時にデータが盗まれても、復号鍵がなければ中身を読み取ることができません。

代表的なAWSサービス:

  • AWS KMS(暗号鍵の管理)
  • S3 サーバーサイド暗号化(AES-256, KMSキー)
  • RDS 暗号化(KMSを使用)
  • EBS 暗号化(ストレージ暗号化)

🔹 具体的なコマンド例(S3データの暗号化)

aws s3 cp myfile.txt s3://my-secure-bucket/ --sse aws:kms --sse-kms-key-id alias/my-key

2.2 通信の暗号化とは?

データがAWS内外を移動する際に、第三者に盗み見されないよう暗号化する方法です。

代表的なAWSサービス:

  • TLS(HTTPS)(CloudFront, ELB, API Gatewayなど)
  • AWS Certificate Manager(ACM)(SSL/TLS証明書管理)
  • AWS PrivateLink(VPC内の暗号化通信)
  • AWS VPN(オンプレミスとの暗号化通信)

🔹 具体的なコマンド例(ACMを使った証明書の発行)

aws acm request-certificate --domain-name example.com --validation-method DNS


3. AWS KMSと他の暗号化サービスの比較

サービス主な用途暗号化の種類
AWS KMS鍵管理、データ暗号化AES-256, RSA
AWS ACMTLS証明書管理TLS/SSL
AWS PrivateLinkVPC間通信の暗号化IPsec, PrivateLink
AWS VPNAWS⇔オンプレミス通信の暗号化VPN(IPsec)

4. AWS KMSの具体的なコード例(Python)

🔹 4.1 暗号鍵の作成

import boto3
kms_client = boto3.client('kms')

response = kms_client.create_key(
    Description='My encryption key',
    KeyUsage='ENCRYPT_DECRYPT',
    CustomerMasterKeySpec='SYMMETRIC_DEFAULT'
)
print("Key ID:", response['KeyMetadata']['KeyId'])

🔹 4.2 データの暗号化

plaintext = b'Hello, AWS KMS!'
kms_response = kms_client.encrypt(
    KeyId='alias/my-key',
    Plaintext=plaintext
)
ciphertext_blob = kms_response['CiphertextBlob']

🔹 4.3 データの復号化

decrypt_response = kms_client.decrypt(
    CiphertextBlob=ciphertext_blob
)
decrypted_text = decrypt_response['Plaintext']
print("Decrypted text:", decrypted_text.decode())


5. AWS SAA模擬問題

Q1: AWS KMSの「カスタマーマネージドキー(CMK)」に関する説明として正しいものはどれですか?

  1. AWSによって自動的に作成される。
  2. ユーザーが作成し、アクセス制御を設定できる。
  3. 一度作成すると削除できない。
  4. 暗号化に使用できない。

答え: 2. ユーザーが作成し、アクセス制御を設定できる。

Q2: S3のデータをAWS KMSを使って暗号化する際に使用するオプションは?

  1. --sse aws:kms
  2. --sse s3
  3. --sse aes
  4. --encrypt kms

答え: 1. --sse aws:kms


まとめ

AWS KMSは、データの暗号化を管理する強力なツールです。データの安全性を確保するために、データ暗号化と通信暗号化の違いを理解し、適切なAWSサービスを選択することが重要 です。

AWS認定試験(SAA)でもKMSは頻出トピックなので、しっかり学習しておきましょう!🚀

コメント

タイトルとURLをコピーしました