

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

# 자습서: 선택적 다중 버킷 액세스로 AWS Transfer Family 웹 앱 설정
<a name="webapp-s3-tutorial"></a>

이 자습서에서는 단일 사용자에 대한 특정 Amazon S3 버킷 권한으로 Transfer Family 웹 앱을 구성하는 방법을 안내합니다. 보안을 유지하면서 사용자가 한 버킷에서 다운로드하여 다른 버킷으로 업로드할 수 있는 솔루션을 설정하는 방법을 알아봅니다. 이 자습서는 기본 자습서에서 다루는 개념을 기반으로 하는 고급 자습서입니다. AWS Transfer Family 웹 앱을 처음 사용하는 경우 로 시작하는 것이 좋습니다[자습서: 기본 Transfer Family 웹 앱 설정](web-app-tutorial.md).

## 사전 조건
<a name="webapp-s3-tutorial-prereqs"></a>

이 튜토리얼을 시작하려면 다음이 필요합니다.
+  AWS Transfer Family 웹 앱과 동일한 리전에 구성된 IAM Identity Center. 는 AWS 모든 리전에 대해 AWS 계정당 하나의 IAM Identity Center 인스턴스만 허용합니다.
+ IAM Identity Center에 구성된 사용자가 한 명 이상 있습니다.
+ S3 버킷 2개: 다운로드용 버킷 1개와 업로드용 버킷 1개.

**참고**  
이 자습서에서는 기본 웹 앱 자습서와 많은 사전 조건을 공유합니다. IAM Identity Center 설정 및 사용자 생성에 대한 자세한 내용은 섹션을 참조하세요[자습서: 기본 Transfer Family 웹 앱 설정](web-app-tutorial.md).

## 1단계: Transfer Family 웹 앱 생성
<a name="webapp-s3-tutorial-create-webapp"></a>

**Transfer Family 웹 앱을 생성하려면**

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

1. 왼쪽 탐색 창에서 **웹 앱을** 선택합니다.

1. **웹 앱 생성을** 선택합니다.

   인증 액세스의 경우 서비스는 사전 조건으로 설정한 AWS IAM Identity Center 인스턴스를 자동으로 찾습니다.

1. **권한 유형** 창에서 **새 서비스 역할 생성 및 사용을** 선택합니다. 서비스가 자격 증명 보유자 역할을 생성합니다. 자격 증명 보유자 역할에는 인증된 사용자의 자격 증명이 세션에 포함됩니다.

1. **웹 앱 단위** 창에서 기본값인 1을 수락하거나 필요한 경우 더 높은 값으로 조정합니다.

1. 웹 앱을 구성하는 데 도움이 되는 태그를 추가합니다. 자습서의 경우 키의 **이름과** 값에 대한 **자습서 웹 앱을** 입력합니다.
**작은 정보**  
웹 앱 이름을 생성한 후 **웹 앱** 목록 페이지에서 직접 편집할 수 있습니다.

1. **다음을** 선택하여 **웹 앱 설계** 페이지를 엽니다. 이 화면에서 다음 정보를 제공합니다.

   선택적으로 웹 앱의 제목을 제공할 수 있습니다. 로고 및 파비콘에 대한 이미지 파일을 업로드할 수도 있습니다.
   + 페이지 제목의 경우 사용자가 웹 앱에 연결할 때 표시되는 브라우저 탭의 제목을 사용자 지정합니다. 페이지 제목에 아무 것도 입력하지 않으면 기본적으로 **웹 앱 전송**으로 설정됩니다.
   + 로고의 경우 이미지 파일을 업로드합니다. 로고 이미지의 최대 파일 크기는 50KB입니다.
   + favicon의 경우 이미지 파일을 업로드합니다. 파비콘의 최대 파일 크기는 20KB입니다.

1. **다음을** 선택한 다음 **웹 앱 생성을** 선택합니다.

## 2단계: S3 액세스를 위한 IAM 역할 구성
<a name="webapp-s3-tutorial-iam-roles"></a>

두 개의 IAM 역할을 생성해야 합니다. 하나는 첫 번째 버킷에 대한 다운로드 전용 액세스 권한이 있고 다른 하나는 두 번째 버킷에 대한 업로드 전용 액세스 권한이 있습니다.

### 두 역할에 대한 신뢰 정책
<a name="webapp-s3-tutorial-trust-policy"></a>

두 IAM 역할에 대해 다음 신뢰 정책을 사용합니다.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessGrantsTrustPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "access-grants.s3.amazonaws.com"
            },
            "Action": [
                "sts:AssumeRole",
                "sts:SetSourceIdentity",
                "sts:SetContext"
            ]
        }
    ]
}
```

### 다운로드 버킷에 대한 IAM 정책
<a name="webapp-s3-tutorial-download-policy"></a>

다운로드 버킷에 대한 읽기 전용 액세스를 위해 다음 정책을 사용하여 IAM 역할을 생성합니다.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ObjectLevelReadPermissions",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:GetObjectAcl",
                "s3:GetObjectVersionAcl",
                "s3:ListMultipartUploadParts",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket1"
            ]
        }
    ]
}
```

**중요**  
**amzn-s3-demo-bucket1**을 다운로드 버킷의 실제 이름으로 바꿉니다.

### 버킷 업로드를 위한 IAM 정책
<a name="webapp-s3-tutorial-upload-policy"></a>

업로드 버킷에 대한 쓰기 액세스를 위해 다음 정책을 사용하여 다른 IAM 역할을 생성합니다.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ObjectLevelWritePermissions",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectVersionAcl",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:AbortMultipartUpload",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket2/*",
                "arn:aws:s3:::amzn-s3-demo-bucket2"
            ]
        }
    ]
}
```

**중요**  
**amzn-s3-demo-bucket2**를 업로드 버킷의 실제 이름으로 바꿉니다.

## 3단계: S3 Access Grants 설정
<a name="webapp-s3-tutorial-access-grants"></a>

1. 에서 S3 콘솔을 엽니다[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. 탐색 창에서 **Access Grants를** 선택합니다.

1. **S3 Access Grants 인스턴스 생성을** 클릭합니다.

1. **IAM Identity Center 인스턴스 추가** 옵션을 선택하고 ID 센터 인스턴스 ARN을 입력합니다.

1. **다음을** 클릭한 다음 **취소**를 클릭하여 추가 단계를 진행하지 않고 S3 Access Grants 인스턴스 생성을 완료합니다.

이 단계에서는 S3 Access Grants 인스턴스를 생성합니다. 이제 위치를 등록하고 액세스 권한을 생성합니다.

## 4단계: S3 버킷 위치 등록
<a name="webapp-s3-tutorial-register-locations"></a>

두 S3 버킷을 S3 Access Grants의 위치로 등록합니다.

1. S3 Access Grants 콘솔에서 **위치로** 이동하여 **위치 등록**을 클릭합니다.

1. **위치 범위에서** 다운로드할 특정 S3 버킷(amzn-s3-demo-bucket1)을 선택합니다.

1. IAM 역할을 선택하라는 메시지가 표시되면 이전에 생성한 IAM 역할 다운로드를 선택합니다.

1. 등록 프로세스를 완료합니다.

1. 이 프로세스를 반복하여 업로드 버킷(amzn-s3-demo-bucket2)을 등록하고 메시지가 표시되면 업로드 IAM 역할을 선택합니다.

## 5단계: 액세스 권한 부여 생성
<a name="webapp-s3-tutorial-create-grants"></a>

등록된 각 위치에 대해 하나씩 두 개의 권한 부여를 생성합니다.

1. S3 Access Grants 콘솔에서 **권한 부여**로 이동하여 **권한 부여 생성을** 클릭합니다.

1. **위치에서** **위치 찾아보**기를 클릭하고 다운로드 버킷 위치(amzn-s3-demo-bucket1)를 선택합니다.

1. **하위 접두사**(선택 사항)에서 `*`를 입력하여 전체 버킷에 대한 액세스를 허용하거나와 같은 경로를 지정`folder1/folder2/*`하여 특정 접두사에 대한 액세스를 제한합니다.

   를 사용하면 권한 부여 범위가 로 `*` 설정`s3://bucket-name/*`되므로 전체 버킷에 액세스할 수 있습니다. 특정 접두사에 대한 액세스만 허용하려면 권한 부여 범위를 로 `folder1/folder2/*`설정하는와 같은 경로를 입력합니다`s3://bucket-name/folder1/folder2/*`.

1. **권한 및 액세스**에서 다운로드 버킷에 대한 **읽기**를 선택합니다.

1. 피부**여자 유형**에서 **IAM Identity Center의 디렉터리 자격 증명을** 선택합니다.

1. **IAM 보안 주체 유형**에서 **사용자를** 선택하고 IAM Identity Center 사용자의 사용자 ID를 입력합니다.

1. 권한 부여 생성 프로세스를 완료합니다.

1. 이 프로세스를 반복하여 업로드 버킷(amzn-s3-demo-bucket2)에 대한 권한 부여를 생성하되 권한에 대해 **읽기-쓰기**를 선택합니다.

## 6단계: S3 버킷에 대한 CORS 정책 구성
<a name="webapp-s3-tutorial-cors"></a>

WebApp을 통한 액세스를 허용하도록 두 S3 버킷에 대한 CORS 정책을 구성합니다. AWS Transfer Family 

1. S3 콘솔을 열고 다운로드 버킷(amzn-s3-demo-bucket1)으로 이동합니다.

1. **권한** 탭을 선택합니다.

1. **CORS(Cross-Origin Resource Sharing)** 섹션으로 스크롤하여 **편집**을 클릭합니다.

1. 다음 CORS 구성을 추가하여 *WebAppEndpoint*를 실제 WebApp 엔드포인트 URL로 바꿉니다.

    AWS Transfer Family 콘솔의 WebApps. **https://webapp-\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1.transfer-webapp.us-west-2.on.aws** 비슷하게 보일 것입니다.

   ```
   [
     {
       "AllowedHeaders": [
         "*"
       ],
       "AllowedMethods": [
         "GET",
         "PUT",
         "POST",
         "DELETE",
         "HEAD"
       ],
       "AllowedOrigins": [
         "https://WebAppEndpoint"
       ],
       "ExposeHeaders": [
         "last-modified",
         "content-length",
         "etag",
         "x-amz-version-id",
         "content-type",
         "x-amz-request-id",
         "x-amz-id-2",
         "date",
         "x-amz-cf-id",
         "x-amz-storage-class",
         "access-control-expose-headers"
       ],
       "MaxAgeSeconds": 3000
     }
   ]
   ```

1. **변경 사항 저장**을 클릭합니다.

1. 업로드 버킷(amzn-s3-demo-bucket2)에 대해 프로세스를 반복합니다.

## 7단계: 구성 테스트
<a name="webapp-s3-tutorial-testing"></a>

1.  AWS Transfer Family 웹 앱 URL을 엽니다. AWS Transfer Family 콘솔의 **액세스 엔드포인트** 필드의 WebApps에서이 URL을 찾을 수 있습니다.

1. 액세스 권한 부여로 구성한 IAM Identity Center 사용자 자격 증명을 사용하여 로그인합니다.

1. 로그인한 후 홈 페이지에 두 S3 위치가 모두 표시됩니다.

1. 다운로드 버킷(amzn-s3-demo-bucket1)으로 이동하여 파일을 다운로드할 수 있지만 업로드할 수 없는지 확인합니다.

1. 업로드 버킷(amzn-s3-demo-bucket2)으로 이동하여 파일을 업로드할 수 있는지 확인합니다.

## 결론
<a name="webapp-s3-tutorial-conclusion"></a>

단일 사용자에 대한 선택적 S3 버킷 액세스로 AWS Transfer Family WebApp을 성공적으로 구성했습니다. 이 설정을 통해 사용자는 IAM 역할 및 S3 Access Grants를 통해 보안을 유지하면서 한 버킷에서 다운로드하고 다른 버킷으로 업로드할 수 있습니다.

이 접근 방식은 각 사용자에 대해 S3 Access Grants에 추가 권한을 생성하여 여러 사용자에게 확장할 수 있으므로 버킷 액세스 권한을 세밀하게 제어할 수 있습니다. 기본 웹 앱 설정에 대한 자세한 내용은 섹션을 참조하세요[자습서: 기본 Transfer Family 웹 앱 설정](web-app-tutorial.md).