파일 암호 해독을 위한 관리형 워크플로우 설정 - AWS Transfer Family

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

파일 암호 해독을 위한 관리형 워크플로우 설정

이 자습서에서는 복호화 단계가 포함된 관리형 워크플로를 설정하는 방법을 설명합니다. 또한 자습서에서는 Amazon S3 버킷에 암호화된 파일을 업로드한 다음 동일한 버킷에서 복호화된 파일을 보는 방법을 보여줍니다.

참고

AWS 스토리지 블로그에는 Transfer Family Managed 워크플로를 사용하여 코드를 작성하지 않고 파일을 간단히 해독하는 방법, PGP를 사용한 파일 암호화 및 암호 해독 방법을 설명하는 게시물이 있습니다. AWS Transfer Family

1단계: 실행 역할 구성

Transfer Family가 워크플로를 시작하는 데 사용할 수 있는 AWS Identity and Access Management (IAM) 실행 역할을 생성합니다. 실행 역할을 생성하는 프로세스는 워크플로에 대한 IAM 정책에 설명되어 있습니다.

참고

신뢰 관계를 구축하기 위해에 설명된 대로 실행 역할을 생성하는 과정에서 실행 역할과 Transfer Family 사이에 신뢰 관계를 확실히 구축해야 합니다.

다음 실행 역할 정책에는 이 자습서에서 생성한 워크플로를 시작하는 데 필요한 모든 권한이 포함되어 있습니다. 이 정책 예를 사용하려면 user input placeholders를 실제 정보로 바꾸세요. 암호화된 파일을 업로드하는 Amazon S3 버킷의 이름으로 DOC-EXAMPLE-BUCKET 바꾸십시오.

참고

모든 워크플로에 이 예에 나열된 모든 권한이 필요한 것은 아닙니다. 특정 워크플로의 단계 유형에 따라 권한을 제한할 수 있습니다. 사전 정의된 각 단계 타입에 필요한 권한은 사전 정의된 단계 사용에 설명되어 있습니다. 사용자 지정 단계에 필요한 권한은 사용자 지정 단계 IAM 권한에 설명되어 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "WorkflowsS3Permissions", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:PutObject", "s3:PutObjectTagging", "s3:ListBucket", "s3:PutObjectTagging", "s3:PutObjectVersionTagging", "s3:DeleteObjectVersion", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET"] "Condition": { "StringEquals": { "s3:RequestObjectTag/Archive": "yes" } } }, { "Sid": "DecryptSecret", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/*" } ] }

2단계: 관리형 워크플로 생성

이제 복호화 단계가 포함된 워크플로를 만들어야 합니다.

복호화 단계가 포함된 워크플로를 만들려면
  1. https://console.aws.amazon.com/transfer/ 에서 AWS Transfer Family 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 워크플로를 선택한 다음, 워크플로 생성을 선택합니다.

  3. 다음 세부 정보를 입력합니다.

    • 설명을 입력합니다. 예를 들어, Decrypt workflow example.

    • 공칭 단계 섹션에서 단계 추가를 선택합니다.

  4. 단계 타입 선택에서 파일 복호화를 선택한 후 다음을 선택합니다.

  5. 파라미터 구성 대화 상자에서 다음 사항을 지정합니다.

    • 설명이 포함된 단계 이름을 입력합니다. 예: decrypt-step. 단계 이름에는 공백은 허용되지 않습니다.

    • 복호화된 파일의 대상으로 Amazon S3을 선택합니다.

    • 대상 버킷 이름으로는 1단계에서 생성한 IAM 정책에서 DOC-EXAMPLE-BUCKET로 지정한 것과 동일한 Amazon S3 버킷을 선택합니다.

    • 대상 키 접두사에는 대상 버킷에 복호화된 파일을 저장할 접두사(폴더)의 이름을 입력합니다. 예: decrypted-files/.

      참고

      접두사에는 반드시 후행 슬래시(/)를 추가해야 합니다.

    • 이 자습서에서는 기존 항목 덮어쓰기를 선택 해제해 두세요. 이 설정을 지우면 기존 파일과 이름이 같은 파일을 해독하려고 하면 워크플로 처리가 중지되고 새 파일은 처리되지 않습니다.

    다음을 선택하여 검토 화면으로 이동합니다.

  6. 해당 단계의 세부 정보를 검토합니다. 모든 내용이 정확하면 단계 생성을 선택합니다.

  7. 워크플로에는 단일 복호화 단계만 필요하므로 추가로 구성할 단계가 없습니다. 워크플로 생성을 선택하여 새 워크플로를 생성합니다.

새 워크플로의 워크플로 ID를 기록해 둡니다. 다음 단계에서 이 ID가 필요합니다. 이 자습서에서는 w-1234abcd5678efghi를 예 워크플로 ID로 사용합니다.

3단계: 서버에 워크플로 추가 및 사용자 생성

이제 복호화 단계가 포함된 워크플로를 Transfer Family 서버에 연결해야 합니다. 이 자습서에서는 기존 Transfer Family 서버에 워크플로를 연결하는 방법을 보여줍니다. 또는 워크플로에 사용할 새 서버를 만들 수 있습니다.

워크플로를 서버에 연결한 후에는 SFTP를 통해 서버에 연결하고 워크플로가 실행되도록 트리거할 수 있는 사용자를 만들어야 합니다.

워크플로를 실행하도록 Transfer Family 서버를 구성하려면
  1. https://console.aws.amazon.com/transfer/ 에서 AWS Transfer Family 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 서버를 선택한 다음 목록에서 서버 하나를 선택합니다. 이 서버가 SFTP 프로토콜을 지원하는지 확인하세요.

  3. 서버의 세부 정보 페이지에서 추가 세부 정보 섹션까지 아래로 스크롤한 다음 편집을 선택합니다.

  4. 추가 세부 정보 편집 페이지의 관리형 워크플로 섹션에서 워크플로를 선택하고 해당하는 실행 역할을 선택합니다.

  5. 페이지 맨 아래로 스크롤하고 저장을 선택하여 변경 내용을 저장합니다.

사용 중인 서버의 ID를 기록해 둡니다. PGP 키를 저장하는 데 사용하는 AWS Secrets Manager 암호의 이름은 부분적으로 서버 ID를 기반으로 합니다.

워크플로를 트리거할 수 있는 사용자를 추가하려면
  1. https://console.aws.amazon.com/transfer/ 에서 AWS Transfer Family 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 서버를 선택한 다음 복호화 워크플로에 사용할 서버를 선택합니다.

  3. 서버 세부 정보 페이지에서 사용자 섹션으로 스크롤하여 사용자 추가를선택합니다.

  4. 새 사용자의 경우 다음 세부 정보를 입력합니다.

    • 사용자 이름decrypt-user를 입력합니다.

    • 역할에서 서버에 액세스할 수 있는 사용자 역할을 선택합니다.

    • 홈 디렉터리의 경우 이전에 사용한 Amazon S3 버킷을 선택합니다. 예:DOC-EXAMPLE-BUCKET.

    • SSH 퍼블릭 키의 경우 보유한 프라이빗 키에 해당하는 퍼블릭 키를 붙여넣습니다. 자세한 내용은 서비스 관리 사용자를 위한 SSH 키 생성를 참조하세요.

  5. 추가를 선택하여 새 사용자를 저장합니다.

이 서버의 Transfer Family 사용자 이름을 기록해 둡니다. 암호는 부분적으로 사용자 이름을 기반으로 합니다. 단순화를 위해 이 자습서에서는 서버의 모든 사용자가 사용할 수 있는 기본 암호를 사용합니다.

4단계: PGP 키 쌍 생성

지원되는 PGP 클라이언트 중 하나를 사용하여 PGP키 쌍을 생성합니다. 이 과정은 PGP 키 생성에 자세히 설명되어 있습니다.

PGP 키 쌍 생성
  1. 이 자습서에서는 gpg(GnuPG) 버전 2.0.22 클라이언트를 사용하여 RSA를 암호화 알고리즘으로 사용하는 PGP 키 쌍을 생성할 수 있습니다. 이 클라이언트의 경우 다음 명령을 실행하고 이메일 주소와 암호를 입력합니다. 원하는 이름이나 이메일 주소를 사용할 수 있습니다. 자습서 뒷부분에서 값을 입력해야 하므로 사용하는 값을 기억해 두세요.

    gpg --gen-key
    참고

    GnuPG 버전 2.3.0 이상을 사용하는 경우 gpg --full-gen-key를 실행해야 합니다. 생성할 키 타입을 묻는 메시지가 표시되면 RSA 또는 ECC를 선택합니다. 하지만 ECC를 선택할 경우 타원 곡선에서 NIST 또는 BrainPool을 선택해야 합니다. Curve 25519를 선택하지 마세요.

  2. 다음 명령을 실행하여 프라이빗 키를 내보냅니다. user@example.com을 키를 생성할 때 사용한 이메일 주소로 바꿉니다.

    gpg --output workflow-tutorial-key.pgp --armor --export-secret-key user@example.com

    이 명령은 프라이빗 키를 workflow-tutorial-key.pgp 파일로 내보냅니다. 출력 파일의 이름을 원하는 대로 지정할 수 있습니다. 프라이빗 키를 AWS Secrets Manager에 추가한 후 프라이빗 키 파일을 삭제할 수도 있습니다.

5단계: PGP 프라이빗 키를 AWS Secrets Manager에 저장

매우 구체적인 방식으로 Secrets Manager에 프라이빗 키를 저장해야 워크플로가 업로드된 파일에 대한 복호화 단계를 실행할 때 워크플로가 프라이빗 키를 찾을 수 있습니다.

참고

Secrets Manager에 비밀을 저장하면 AWS 계정 요금이 발생합니다. 요금에 대한 자세한 내용은 AWS Secrets Manager 요금을 참조하세요.

Secrets Manager에 PGP 프라이빗 키를 저장하려면
  1. https://console.aws.amazon.com/secretsmanager/ 에서 AWS Management Console 로그인하고 AWS Secrets Manager 콘솔을 여십시오.

  2. 왼쪽 탐색 창에서 암호를 선택합니다.

  3. 암호 페이지에서 새 암호 저장을 선택합니다.

  4. 암호 선택 페이지의 암호 타입에서 다른 타입의 암호를 선택합니다.

  5. 키/값 쌍 섹션에서 키/값 탭을 선택합니다.

    • PGPPrivateKey를 입력합니다.

    • — 프라이빗 키의 텍스트를 값 필드에 붙여넣습니다.

  6. 행 추가를 선택하고 키/값 쌍 섹션에서 키/값 탭을 선택합니다.

    • PGPPassphrase를 입력합니다.

    • 4단계: PGP 키 쌍 생성에서 PGP 키 쌍을 생성할 때 사용한 암호를 입력합니다.

  7. 다음을 선택합니다.

  8. 암호 구성 페이지에 암호를 위한 명칭과 설명을 입력합니다. 특정 사용자를 위한 비밀번호나 모든 사용자가 사용할 수 있는 비밀번호를 생성할 수 있습니다. 서버 ID가 s-11112222333344445인 경우 다음과 같이 암호 이름을 지정합니다.

    • 모든 사용자에 대한 기본 암호를 만들려면 암호의 이름을 aws/transfer/s-11112222333344445/@pgp-default 지정하십시오.

    • 이전에 생성한 사용자에 대한 암호만 생성하려면 암호 이름을 aws/transfer/s-11112222333344445/decrypt-user로 지정합니다.

  9. 다음을 선택한 후 교체 구성 페이지의 기본값을 그대로 사용합니다. 그 다음 다음을 선택합니다.

  10. 검토 페이지에서 저장을 선택하여 암호를 만들고 저장합니다.

Secrets Manager에 PGP 개인 키를 추가하는 방법에 대한 자세한 내용은 PGP 키 AWS Secrets Manager 저장에 사용을 참조하십시오.

6단계: 파일 암호화

gpg 프로그램을 사용하여 워크플로에 사용할 파일을 암호화합니다. 파일을 암호화하려면 다음 명령을 실행합니다.

gpg -e -r marymajor@example.com --openpgp testfile.txt

이 자동화를 실행하기 전에 다음 사항에 유의하세요.

  • -r 인수의 경우 marymajor@example.com을 PGP 키 쌍을 만들 때 사용한 이메일 주소로 바꿉니다.

  • --openpgp 플래그는 옵션입니다. 이 플래그는 암호화된 파일이 OpenPGP RFC4880 표준을 준수하도록 합니다.

  • 이 명령은 testfile.txt와 같은 위치에 이름이 testfile.txt.gpg라고 지정된 파일을 만듭니다.

7단계: 워크플로 실행 및 결과 보기

워크플로를 실행하려면 3단계에서 만든 사용자를 사용하여 Transfer Family 서버에 연결합니다. 그런 다음 2.5단계에서 지정한 Amazon S3 버킷을 살펴보고 복호화된 파일을 볼 수 있도록 대상 파라미터를 구성할 수 있습니다.

복호화 워크플로를 실행하려면
  1. 명령 터미널을 엽니다.

  2. 실제 엔드포인트를 your-endpoint로 대체하고 transfer-key를 사용자의 SSH 프라이빗 키로 대체하여 다음 명령을 실행합니다.

    sftp -i transfer-key decrypt-user@your-endpoint

    예를 들어 프라이빗 키가 ~/.ssh/decrypt-user에 저장되어 있고 엔드포인트가 s-11112222333344445.server.transfer.us-east-2.amazonaws.com인 경우, 명령은 다음과 같습니다.

    sftp -i ~/.ssh/decrypt-user decrypt-user@s-11112222333344445.server.transfer.us-east-2.amazonaws.com
  3. pwd 명령을 실행합니다. 이 명령이 제대로 실행되면 다음과 같은 응답을 반환합니다.

    Remote working directory: /DOC-EXAMPLE-BUCKET/decrypt-user

    디렉터리에는 Amazon S3 버킷 이름이 반영됩니다.

  4. 다음 명령을 실행하여 파일을 업로드하고 워크플로를 실행하도록 트리거합니다.

    put testfile.txt.gpg
  5. 복호화된 파일의 대상 폴더는 워크플로를 만들 때 지정한 decrypted-files/ 폴더입니다. 이제 해당 폴더로 이동하여 내용을 나열할 수 있습니다.

    cd ../decrypted-files/ ls

    성공하면 ls 명령이 testfile.txt 파일을 나열합니다. 이 파일을 다운로드하여 이전에 암호화한 원본 파일과 동일한지 확인할 수 있습니다.