[초보자] AWS Key Management Service(AWS KMS)를 사용해 보십시오.

6171 단어 kmsAWS초보자

1. 목적

  • AWS의 보안 관련 서비스를 복습하고 있습니다.AWS KMS에 대한 암호화 키 로그인, 파일 암호화, 복호화 등 기본적인 처리를 하고 동작 이미지를 파악합니다
  • 2. AWS KMS란 (자신의 이해)

  • 데이터 암호화를 위한 키를 관리하는 서비스입니다.암호화 키를 AWS의 책임 범위 내에 저장하거나 업데이트합니다
  • 3. 했던 일

  • CMK(고객 마스터 키)
  • CMK와 연관된 데이터 키를 만듭니다
  • 데이터 키로 자신의 파일을 암호화합니다
  • (암호화된 데이터 키와 암호화된 파일을 보존하고 원본 파일을 삭제합니다
  • 암호화된 데이터 키를 복호화하고 암호화된 데이터 키를 사용하여 암호화된 파일을 복호화합니다

  • 4. 예습


    선인의 총결산 학습을 읽다.

  • "10분이면 알 수 있어요! 포인트 관리 서비스의 구조"
  • 2014년의 낡은 보도, 메인 키와 데이터 키 등 개념에 대한 설명은 매우 이해하기 쉽다

  • "AWS KMS를 사용하여 개인 키 관리"
  • 2017년 보도이기도 하다. 새로운 것은 아니지만 암호화, 복호화 순서는 이해하기 쉽고 이 기사에 기재된 순서를 묘사함으로써 동작을 확인한다
  • 5. 구현 단계


    5.1 CMK 만들기(고객 마스터 키)

  • 우선, 관리 콘솔에서 KMS에서 암호화 처리를 할 때의 기초가 되는 CMK(고객 마스터 키)를 만듭니다
  • KMS 메뉴에서'고객관리형 키'를 열고'키 만들기'를 선택합니다
  • 키 유형을'대칭'으로 설정하고 키 재질의 독창성을'KMS'로 설정합니다. ※유형을 대칭으로 설정하면 CMK는 AES265bit입니다.또한 Origin을 "KMS"로 설정하여 KMS의 서비스용 영역에서 AWS가 생성하고 관리하는 CMK를 만듭니다
  • 별명(명칭)을'mksamba-masterkey'로 설정합니다
  • 키 관리자 추가.이번에는 IAM 사용자(자신)를 지정합니다.키 관리자는 키를 활성화, 비활성화, 업데이트 및 삭제할 수 있습니다
  • 키 사용 허가자를 추가합니다.이번에는 IAM 사용자(자신)를 지정합니다.키의 사용 허가자는 키를 사용하는 암호화, 복호화 처리를 할 수 있다
  • 핵심 전략의 내용을 검사한다.이전 단계에서 추가된 키 관리자, 키 사용 허가자를 제외하고 초기 설정값으로 자신의 AWS 계정의 IAM 사용자 중 KMS에 대한 접근권을 가진 사용자에게 모든 작업을 허가합니다
  • 제작된 CMK(mksamba-masterkey)를 확인했습니다.메뉴에서 활성화, 비활성화 및 삭제를 스케줄링할 수 있습니다.제작된 CMK의 내용은 볼 수 없습니다

  • 5.2 데이터 키 만들기

  • CMK의 데이터 키CMK 자체로 직접 데이터를 암호화할 수도 있지만, 일반적으로 실제 데이터의 암호화 처리를 위한 데이터 키를 발행하고 이 데이터 키를 사용하여 암호화한다
  • 여기서부터 CLI를 사용합니다
  • # AWS CLIバージョンの確認
    [ec2-user@ip-10-0-0-126 ~]$ aws --version
    aws-cli/2.1.24 Python/3.7.3 Linux/4.14.214-160.339.amzn2.x86_64 exe/x86_64.amzn.2 prompt/off
    
    # KMSのAPI(GenerateDatakey)を用いて、CMKに紐づくデータキーを作成
    [ec2-user@ip-10-0-0-126 ~]$ aws kms generate-data-key --key-id arn:[mksamba-masterkeyのARN] --key-spec AES_256
    {
        "CiphertextBlob": "[encrypted-datakey-string]",
        "Plaintext": "[plain-datakey-string]",
        "KeyId": "arn:aws:kms:ap-northeast-1:xxxxxxxxxxxx:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
    
  • "Plaintext"는 데이터 키 자체이고 "CiphertextBlob"는 CMK에서 암호화되고 base64로 인코딩된 데이터 키입니다
  • "Plaintext"는 문자열을 그대로 복사하여 파일 "plain-datakey"로 저장합니다
  • "CiphertextBlob"문자열을 복사하여 base64 디코딩을 하고 파일 "encrypted-datakey"로 저장합니다
  • [ec2-user@ip-10-0-0-126 ~]$ echo [plain-datakey-string] > plain-datakey
    [ec2-user@ip-10-0-0-126 ~]$ echo [encrypted-datakey-string] | base64 --decode > encrypted-datakey
    

    5.3 파일 암호화

  • 만든 데이터 키를 사용하여 파일을 암호화합니다
  • # 暗号化したいファイルの確認
    [ec2-user@ip-10-0-0-126 ~]$ cat plain-document
    休みがほしい。温泉に行きたい。
    
    # データキーを用いて暗号化する。
    # 元ファイル"plain-document"を、暗号鍵"plain-datakey"を用いてaes-256-cbcモードで暗号化して、ファイル"encrypted-document"として保存する。
    [ec2-user@ip-10-0-0-126 ~]$ openssl aes-256-cbc -e -in plain-document -out encrypted-document -pass file:plain-datakey
    
    # 暗号化されていることの確認
    [ec2-user@ip-10-0-0-126 ~]$ cat encrypted-document
    縒唳9楳H??合й偉(碁Ra@?肄?;X・^
    
    
  • 암호화 처리가 끝난 후 안전을 위해 원본 파일인'plain-document'와 암호화되지 않은 데이터 키인'plain-datakey'를 삭제해야 합니다.이번에는 디코딩 후의 동작을 확인하기 위해 원래의 상태를 유지하지만, 디코딩할 때 이 파일들이 존재하지 않는 전제에서 디코딩 처리를 한다
  • 데이터 키를 사용하여 암호화하는 메커니즘을'Envelope Encryption'이라고 부른다.이번 상황에서 암호화된 데이터 키인'encrypted-datakey'는 봉투(Envelope), 암호화된 파일'encrypted-document'는 편지지, 편지지에 적힌 내용이 봉투에 담겨 밖에서 알 수 없는 인상이다
  • 5.4 파일 복호화

  • 앞의 순서에 따라 암호화된 파일을 복호화합니다
  • # KMSのAPI(Decrypt)を用いて、まず暗号化されたデータキーを復号する。
    [ec2-user@ip-10-0-0-126 ~]$ aws kms decrypt --ciphertext-blob fileb://encrypted-datakey --output text --query Plaintext > decrypted-datakey
    
    # データキーを作成した時に入手した、暗号化前のデータキーと比較し、データが一致することを確認する。
    [ec2-user@ip-10-0-0-126 ~]$ diff plain-datakey decrypted-datakey
    [ec2-user@ip-10-0-0-126 ~]$
    
    # 復号後のデータキーを用いて、暗号化したファイルを復号する。元通りになっていることを確認する。
    [ec2-user@ip-10-0-0-126 ~]$ openssl aes-256-cbc -d -in encrypted-document -pass file:decrypted-datakey
    休みがほしい。温泉に行きたい。
    
  • 이후 디코딩된 데이터 키를 삭제하고 디코딩 처리가 전체적으로 완료됩니다
  • decrypt 시 CMK의 KeyID를 지정하지 않아도 괜찮을지 의심스럽지만, awskmscli가help에 기재된 바에 의하면 CMK가symmetric인 상황에서 CMK를 지정하는 KeyID는 필수적인 것이 아니라 메타데이터를 사용하여 적당한 CMK를 자동으로 선택한다
  • 6. 느끼는 것

  • 우선 원리가 어떤 구조인지 확인할 수 있다.S3와 RDS 등의 데이터를 암호화할 때 어떻게 적용하는지 등은 확인해야 한다
  • 좋은 웹페이지 즐겨찾기