

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

# 파일 복호화를 위한 관리형 워크플로 설정
<a name="workflow-decrypt-tutorial"></a>

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

**참고**  
 AWS 스토리지 블로그에는 Transfer Family 관리형 워크플로, [PGP 및를 사용한 암호화 및 암호화 해제를 사용하여 코드를 작성하지 않고 파일을 간단하게 해독하는 방법을 설명하는 게시물이 있습니다 AWS Transfer Family](https://aws.amazon.com/blogs/storage/encrypt-and-decrypt-files-with-pgp-and-aws-transfer-family/).

**Topics**
+ [1단계: 실행 역할 구성](#create-example-execution-role)
+ [2단계: 관리형 워크플로 생성](#create-example-workflow)
+ [3단계: 서버에 워크플로 추가 및 사용자 생성](#add-workflow-to-server)
+ [4단계: PGP 키 쌍 생성](#create-example-pgp-key-pair)
+ [5단계:에 PGP 프라이빗 키 저장 AWS Secrets Manager](#output-private-key-to-secrets)
+ [6단계: 파일 암호화](#encrypt-example-file)
+ [7단계: 워크플로 실행 및 결과 보기](#test-decrypt-workflow)

## 1단계: 실행 역할 구성
<a name="create-example-execution-role"></a>

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

**참고**  
[신뢰 관계를 구축하기 위해](requirements-roles.md#establish-trust-transfer)에 설명된 대로 실행 역할을 생성하는 과정에서 실행 역할과 Transfer Family 사이에 신뢰 관계를 확실히 구축해야 합니다.

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

**참고**  
모든 워크플로에 이 예에 나열된 모든 권한이 필요한 것은 아닙니다. 특정 워크플로의 단계 유형에 따라 권한을 제한할 수 있습니다. 사전 정의된 각 단계 타입에 필요한 권한은 [사전 정의된 단계 사용](nominal-steps-workflow.md)에 설명되어 있습니다. 사용자 지정 단계에 필요한 권한은 [사용자 지정 단계 IAM 권한](custom-step-details.md#custom-step-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:::amzn-s3-demo-bucket/*",
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Sid": "DecryptSecret",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:aws/transfer/*"
        }
    ]
}
```

## 2단계: 관리형 워크플로 생성
<a name="create-example-workflow"></a>

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

**복호화 단계가 포함된 워크플로를 만들려면**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) AWS Transfer Family 콘솔을 엽니다.

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

1. 다음 세부 정보를 입력합니다.
   + 설명을 입력합니다. 예를 들어, **Decrypt workflow example**.
   + **공칭 단계** 섹션에서 **단계 추가**를 선택합니다.

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

1. <a name="configure-destination-details"></a>**파라미터 구성** 대화 상자에서 다음 사항을 지정합니다.
   + 설명이 포함된 단계 이름을 입력합니다. 예: **decrypt-step**. 단계 이름에는 공백은 허용되지 않습니다.
   + **복호화된 파일의 대상**으로 Amazon S3을 선택합니다.
   + **대상 버킷 이름**으로는 1단계에서 생성한 IAM 정책에서 `amzn-s3-demo-bucket`로 지정한 것과 동일한 Amazon S3 버킷을 선택합니다.
   + **대상 키 접두사**에는 대상 버킷에 복호화된 파일을 저장할 접두사(폴더)의 이름을 입력합니다. 예: **decrypted-files/**.
**참고**  
접두사에는 반드시 후행 슬래시(**/**)를 추가해야 합니다.
   + 이 자습서에서는 **기존 항목 덮어쓰기**를 선택 해제해 두세요. 이 설정을 지우면 기존 파일과 이름이 같은 파일을 해독하려고 하면 워크플로 처리가 중지되고 새 파일은 처리되지 않습니다.

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

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

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

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

## 3단계: 서버에 워크플로 추가 및 사용자 생성
<a name="add-workflow-to-server"></a>

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

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

**워크플로를 실행하도록 Transfer Family 서버를 구성하려면**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) AWS Transfer Family 콘솔을 엽니다.

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

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

1. **추가 세부 정보 편집** 페이지의 **관리형 워크플로** 섹션에서 워크플로를 선택하고 해당하는 실행 역할을 선택합니다.
   + **전체 파일 업로드를 위한 워크플로**의 경우 [2단계: 관리형 워크플로 생성](#create-example-workflow)에서 만든 워크플로를 선택합니다. 예: **w-1234abcd5678efghi**.
   + **관리형 워크플로 실행 역할**의 경우 [1단계: 실행 역할 구성](#create-example-execution-role)에서 생성한 IAM 역할을 선택합니다.

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

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

**워크플로를 트리거할 수 있는 사용자를 추가하려면**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) AWS Transfer Family 콘솔을 엽니다.

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

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

1. 새 사용자의 경우 다음 세부 정보를 입력합니다.
   + **사용자 이름**에 **decrypt-user**를 입력합니다.
   + **역할**에서 서버에 액세스할 수 있는 사용자 역할을 선택합니다.
   + **홈 디렉터리**의 경우 이전에 사용한 Amazon S3 버킷을 선택합니다. 예:`amzn-s3-demo-bucket`.
   + **SSH 퍼블릭 키**의 경우 보유한 프라이빗 키에 해당하는 퍼블릭 키를 붙여넣습니다. 자세한 내용은 [서비스 관리 사용자를 위한 SSH 키 생성](sshkeygen.md)를 참조하세요.

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

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

## 4단계: PGP 키 쌍 생성
<a name="create-example-pgp-key-pair"></a>

[지원되는 PGP 클라이언트](pgp-key-clients.md) 중 하나를 사용하여 PGP키 쌍을 생성합니다. 이 과정은 [PGP 키 생성](generate-pgp-keys.md)에 자세히 설명되어 있습니다.

**PGP 키 쌍 생성**

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

   ```
   gpg --gen-key
   ```
**참고**  
`GnuPG` 버전 2.3.0 이상을 사용하는 경우 `gpg --full-gen-key`를 실행해야 합니다. 생성할 키 타입을 묻는 메시지가 표시되면 RSA 또는 ECC를 선택합니다. **ECC**를 선택하는 경우 타원 곡선에 Curve25519 대해 NIST BrainPool 및 중에서 선택할 수 있습니다.

1. 다음 명령을 실행하여 프라이빗 키를 내보냅니다. `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
<a name="output-private-key-to-secrets"></a>

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

**참고**  
Secrets Manager에 암호를 저장하면 AWS 계정 에 요금이 발생합니다. 요금에 대한 자세한 내용은 [AWS Secrets Manager 요금](https://aws.amazon.com/secrets-manager/pricing)을 참조하세요.

**Secrets Manager에 PGP 프라이빗 키를 저장하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) AWS Secrets Manager 콘솔을 엽니다.

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

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

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

1. **키/값 쌍** 섹션에서 **키/값** 탭을 선택합니다.
   + **키** — **PGPPrivateKey**를 입력합니다.
   + **값** — 프라이빗 키의 텍스트를 값 필드에 붙여넣습니다.

1. **행 추가**를 선택하고 **키/값 쌍** 섹션에서 **키/값** 탭을 선택합니다.
   + **키** — **PGPPassphrase**를 입력합니다.
   + **값** — [4단계: PGP 키 쌍 생성](#create-example-pgp-key-pair)에서 PGP 키 쌍을 생성할 때 사용한 암호를 입력합니다.

1. **다음**을 선택합니다.

1. **암호 구성** 페이지에 암호를 위한 명칭과 설명을 입력합니다. 특정 사용자 또는 모든 사용자가 사용할 수 있는 보안 암호를 생성할 수 있습니다. 서버 ID가 인 경우 다음과 같이 보안 암호의 이름을 *`s-11112222333344445`*지정합니다.
   + 모든 사용자의 기본 보안 암호를 생성하려면 보안 암호의 이름을 로 지정합니다**aws/transfer/*s-11112222333344445*/@pgp-default**.
   + 이전에 생성한 사용자에 대한 암호만 생성하려면 암호 이름을 **aws/transfer/*s-11112222333344445*/decrypt-user**로 지정합니다.

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

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

Secrets Manager에 PGP 프라이빗 키를 추가하는 방법에 대한 자세한 내용은 [PGP 키를 저장하는 AWS Secrets Manager 데 사용을 참조하세요](manage-pgp-keys.md#store-pgp-key-details).

## 6단계: 파일 암호화
<a name="encrypt-example-file"></a>

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

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

이 자동화를 실행하기 전에 다음 사항에 유의하세요.
+ `-r` 인수의 경우 `marymajor@example.com`을 PGP 키 쌍을 만들 때 사용한 이메일 주소로 바꿉니다.
+ `--openpgp` 플래그는 옵션입니다. 이 플래그는 암호화된 파일이 [OpenPGP RFC4880](https://www.rfc-editor.org/rfc/rfc4880) 표준을 준수하도록 합니다.
+ 이 명령은 **testfile.txt**와 같은 위치에 이름이 **testfile.txt.gpg**라고 지정된 파일을 만듭니다.

**중요**  
 AWS Transfer Family 워크플로에 사용할 파일을 암호화할 때는 항상 `-r` 파라미터를 사용하여 비익명 수신자를 지정해야 합니다. 익명 암호화(수신자를 지정하지 않음)는 시스템이 복호화에 사용할 키를 식별할 수 없기 때문에 워크플로에서 복호화 실패를 일으킬 수 있습니다. 이 문제에 대한 디버깅 정보는에서 확인할 수 있습니다[익명 수신자 암호화 문제 해결](workflow-issues.md#workflows-decrypt-anonymous).

## 7단계: 워크플로 실행 및 결과 보기
<a name="test-decrypt-workflow"></a>

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

**복호화 워크플로를 실행하려면**

1. 명령 터미널을 엽니다.

1. 실제 엔드포인트를 `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
   ```

1. `pwd` 명령을 실행합니다. 이 명령이 제대로 실행되면 다음과 같은 응답을 반환합니다.

   ```
   Remote working directory: /amzn-s3-demo-bucket/decrypt-user
   ```

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

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

   ```
   put testfile.txt.gpg
   ```

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

   ```
   cd ../decrypted-files/
   ls
   ```

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