

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

# IAM 역할 및 정책 생성
<a name="requirements-roles"></a>

이 주제에서는 함께 사용할 수 있는 정책 및 역할 유형을 설명하고 사용자 역할 생성 프로세스를 AWS Transfer Family안내합니다. 또한 세션 정책의 작동 방식을 설명하고 사용자 역할 예를 제공합니다.

AWS Transfer Family 는 다음과 같은 유형의 역할을 사용합니다.
+ **사용자 역할** - 서비스 관리 사용자가 필요한 Transfer Family 리소스에 액세스할 수 있도록 허용합니다. Transfer Family 사용자 ARN의 컨텍스트에서이 역할을 수 AWS Transfer Family 임합니다.
+ **액세스 역할** – 전송 중인 Amazon S3 파일에만 액세스할 수 있습니다. 인바운드 AS2 전송의 경우 액세스 역할은 계약의 Amazon 리소스 이름(ARN)을 사용합니다. 아웃바운드 AS2 전송의 경우 액세스 역할은 커넥터의 ARN을 사용합니다.
+ **간접 호출 역할** - Amazon API Gateway와 함께 서버의 사용자 지정 자격 증명 공급자로 사용합니다. Transfer Family는 Transfer Family 서버 ARN의 컨텍스트에서 이 역할을 담당합니다.
+ **로깅 역할** - Amazon CloudWatch에 항목을 기록하는 데 사용됩니다. Transfer Family는 이 역할을 사용하여 File Transfer에 대한 정보와 함께 성공 및 실패 세부 정보를 기록합니다. Transfer Family는 Transfer Family 서버 ARN의 컨텍스트에서 이 역할을 담당합니다. 아웃바운드 AS2 전송의 경우, 로깅 역할은 커넥터 ARN을 사용합니다.
+ **실행 역할** – Transfer Family 사용자가 전화를 걸어 워크플로를 시작할 수 있습니다. Transfer Family는 Transfer Family 워크플로 ARN의 컨텍스트에서 이 역할을 담당합니다.

이러한 역할 외에도 *세션 정책*을 사용할 수 있습니다. 세션 정책은 필요한 경우 액세스를 제한하는 데 사용됩니다. 이러한 정책은 독립형이라는 점에 유의하세요. 즉, 이러한 정책은 역할에 추가할 수 없습니다. 대신 Transfer Family 사용자에게 직접 세션 정책을 추가할 수 있습니다.

**참고**  
서비스 관리 Transfer Family 사용자를 생성하는 경우 **홈 폴더를 기반으로 정책 자동 생성**을 선택할 수 있습니다. 사용자 액세스를 자신의 폴더에 제한하려는 경우 유용한 단축키입니다. 또한 [세션 정책의 작동 방식](#session-policy)에서 세션 정책 및 예에 대한 세부 정보를 볼 수 있습니다. 세션 정책에 대한 자세한 내용은 *IAM 사용 설명서*의 [세션 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)에서도 찾아볼 수 있습니다.

**Topics**
+ [

## 사용자 역할 생성
](#role-create-procedure)
+ [

## 세션 정책의 작동 방식
](#session-policy)
+ [

## 읽기/쓰기 액세스 정책의 예
](#read-write-access)

## 사용자 역할 생성
<a name="role-create-procedure"></a>

사용자를 만들 때, 사용자 액세스에 관한 결정을 여러 번 해야 합니다. 이러한 결정에는 사용자가 액세스할 수 있는 Amazon S3 버킷 또는 Amazon EFS 파일 시스템, 각 Amazon S3 버킷의 일부 및 파일 시스템의 어떤 파일에 액세스할 수 있는지, 사용자에게 어떤 권한(예: `PUT` 또는`GET`)이 포함됩니다.

액세스를 설정하려면 해당 액세스 정보를 제공하는 자격 증명 기반 AWS Identity and Access Management (IAM) 정책 및 역할을 생성합니다. 이 과정의 일부에서, 사용자가 파일 작업의 대상 또는 원본인 Amazon S3 bucket 또는 Amazon EFS에 액세스할 수 있게 됩니다. 이렇게 하려면 나중에 자세하게 설명하는, 다음과 같은 상위 수준 단계를 거쳐야 합니다.

**사용자 역할 생성**

1. 에 대한 IAM 정책을 생성합니다 AWS Transfer Family. 이에 대한 설명은 [에 대한 IAM 정책을 생성하려면 AWS Transfer Family](#iam-policy-procedure)에 나와 있습니다.

1. IAM 역할을 생성하여 새 IAM 정책을 연결합니다. 예는 [읽기/쓰기 액세스 정책의 예](#read-write-access)를 참조하세요.

1.  AWS Transfer Family 와 IAM 역할 간에 신뢰 관계를 설정합니다. 이에 대한 설명은 [신뢰 관계를 구축하기 위해](#establish-trust-transfer)에 나와 있습니다.

다음 절차에서는 IAM 정책 및 역할을 생성하는 방법을 설명합니다.<a name="iam-policy-procedure"></a>

**에 대한 IAM 정책을 생성하려면 AWS Transfer Family**

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

1. 탐색 창에서 **정책**을 선택한 후 **정책 생성**을 선택합니다.

1. **정책 생성** 페이지에서 **JSON** 탭을 선택합니다.

1. 표시되는 편집기에서, 편집기 내용을 IAM 역할에 연결할 IAM 정책으로 바꿉니다.

   읽기/쓰기 액세스 권한을 부여하거나 사용자를 홈 디렉터리로 제한할 수 있습니다. 자세한 내용은 [읽기/쓰기 액세스 정책의 예](#read-write-access)를 참조하세요.

1. **정책 검토**를 선택하고 정책의 이름과 설명을 입력한 다음 **정책 생성**을 선택합니다.

그런 다음 IAM 역할을 만들고 새 IAM 정책을 역할에 연결합니다.<a name="iam-role-procedure"></a>

**에 대한 IAM 역할을 생성하려면 AWS Transfer Family**

1. 탐색 창에서 **역할**을 선택한 후 **역할 생성**을 선택합니다.

   **역할 생성** 페이지에서 **AWS 서비스**가 선택되어 있는지 확인합니다.

1. 서비스 목록에서 **전송**을 선택하고, **다음: 권한**을 선택합니다. 이렇게 하면 AWS Transfer Family 와 간에 신뢰 관계가 설정됩니다 AWS.

1. **권한 정책 연결** 섹션에서, 방금 생성한 정책을 찾아 선택한 다음 **다음: 태그**를 선택합니다.

1. (옵션) 태그의 키와 값을 입력하고 **다음: 검토**를 선택합니다.

1. **검토** 페이지에 새 역할의 명칭과 설명을 입력한 다음 **역할 생성**을 선택합니다.

다음으로 AWS Transfer Family 와 간에 신뢰 관계를 설정합니다 AWS.<a name="establish-trust-transfer"></a>

**신뢰 관계를 구축하기 위해**
**참고**  
이 예에서는 `ArnLike` 및 `ArnEquals` 모두를 사용합니다. 기능적으로 동일하므로 정책을 구성할 때 둘 중 하나를 사용할 수 있습니다. Transfer Family 설명서에서는 조건에 와일드카드 문자가 포함된 경우에는 `ArnLike`를 사용하고, 정확한 일치 조건을 나타내기 위해서는 `ArnEquals`를 사용합니다.

1. IAM 콘솔에서 방금 생성한 역할을 선택합니다.

1. **요약** 페이지에서 **신뢰 관계**를 선택한 다음 **신뢰 관계 편집**을 선택합니다.

1. **신뢰 관계 편집** 편집기에서 **서비스**가 `"transfer.amazonaws.com"`인지 확인합니다. 액세스 정책은 다음과 같습니다.  
****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "transfer.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

   대리인 혼동 문제로부터 스스로를 보호하려면 `aws:SourceAccount` 및 `aws:SourceArn` 조건 키를 사용할 것을 권장합니다. 소스 계정은 서버의 소유자이고 소스 ARN은 사용자의 ARN입니다. 예제:

   ```
   "Condition": {
       "StringEquals": {
           "aws:SourceAccount": "account_id"
       },
       "ArnLike": {
           "aws:SourceArn": "arn:aws:transfer:region:account_id:user/*"
       }
   }
   ```

   사용자 계정의 서버 대신 특정 서버로 제한하려는 경우에도 `ArnLike` 조건을 사용할 수 있습니다. 예제: 

   ```
   "Condition": {    
       "ArnLike": {
           "aws:SourceArn": "arn:aws:transfer:region:account-id:user/server-id/*"
       }
   }
   ```
**참고**  
상기 예에서 각 *사용자 입력 자리 표시자*를 자신의 정보로 바꿉니다.

   헷갈리는 대리인 문제에 대한 자세한 내용 및 기타 예는 [교차 서비스 혼동된 대리자 방지](confused-deputy.md) 단원을 참조하세요.

1. **신뢰 정책 업데이트**를 선택하여 액세스 정책을 업데이트합니다. 

이제가 사용자를 대신하여 AWS 서비스를 AWS Transfer Family 호출하도록 허용하는 IAM 역할을 생성했습니다. 생성한 IAM 정책과 역할을 연결해, 사용자에게 액세스를 부여했습니다. [AWS Transfer Family 서버 엔드포인트 시작하기](getting-started.md) 섹션에서, 이 역할과 정책은 사용자 또는 일반 사용자에게 할당됩니다.

**참고 항목**
+ IAM 역할에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS 서비스에 권한을 위임할 역할 생성을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html).
+ Amazon S3 리소스의 자격 증명 기반 정책에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [Amazon S3의 자격 증명 및 액세스 관리](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)를 참조하세요.
+ Amazon EFS 리소스의 자격 증명 기반 정책에 대해 자세히 알아보려면 *Amazon Elastic File System 사용 설명서*의 [IAM을 사용하여 파일 시스템 데이터 액세스 제어](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html)를 참조하세요.

## 세션 정책의 작동 방식
<a name="session-policy"></a>

관리자가 역할을 생성하면 역할에 여러 사용 사례 또는 팀 구성원을 포괄할 수 있는 광범위한 권한이 포함되는 경우가 많습니다. 관리자가 [콘솔 URL](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)을 구성하면 *세션 정책*을 사용하여 결과 세션에 대한 권한을 줄일 수 있습니다. 예를 들어 [읽기/쓰기 권한](#read-write-access)이 있는 역할을 생성하는 경우 사용자의 액세스를 홈 디렉터리로만 제한하는 URL을 설정할 수 있습니다.

세션 정책은 역할 또는 사용자에 대해 임시 세션을 프로그래밍 방식으로 생성할 때 파라미터로 전달하는 고급 정책입니다. 세션 정책은 객체 접두사에 사용자 이름이 포함된 버킷의 일부에만 액세스할 수 있도록 사용자를 잠그는 데 유용합니다. 다음 다이어그램은 세션 정책의 권한이 세션 정책과 리소스 기반 정책의 교집합과 세션 정책 및 자격 증명 기반 정책의 교집합임을 보여줍니다.

![\[세션 정책 권한 벤 다이어그램. 리소스 기반 정책, 자격 증명 기반 정책 및 세션 정책의 교차점에서 권한이 얼마나 효과적인지 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/images/EffectivePermissions-session-rbp-id.png)


자세한 내용은 *IAM 사용 설명서*의 [세션 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)을 참조하세요.

에서 AWS Transfer Family세션 정책은 Amazon S3와 주고받는 경우에만 지원됩니다. 다음 예 정책은 사용자가 자신의 `home` 디렉터리에만 액세스하게 하는 세션 정책입니다. 다음 사항에 유의하세요.
+ `GetObjectACL` 및 `PutObjectACL` 명령문은 크로스 계정 액세스를 활성화할 필요가 있는 경우에만 요구됩니다. 예컨대, Transfer Family 서버가 다른 계정의 버킷에 액세스할 필요가 있는 경우입니다.
+  세션 정책의 최대 길이는 2,048자입니다. 자세한 내용은 *API 참조*의 `CreateUser` 작업에 대한 [정책 요청 파라미터](https://docs.aws.amazon.com/transfer/latest/APIReference/API_CreateUser.html#API_CreateUser_RequestSyntax)를 참조하세요.
+  Amazon S3 버킷이 AWS Key Management Service (AWS KMS)를 사용하여 암호화된 경우 정책에 추가 권한을 지정해야 합니다. 자세한 내용은 [데이터 보호 및 암호화](encryption-at-rest.md)을 참조하세요.
+ 세션 정책을 사용하여 각 사용자에 대해 별도의 IAM 역할을 생성하지 않고 사용자 속성을 기반으로 액세스 권한을 생성하려면 섹션을 참조하세요[동적 권한 관리 접근 방식](dynamic-permission-management.md).

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListingOfUserFolder",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::${transfer:HomeBucket}"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "${transfer:HomeFolder}/*",
                        "${transfer:HomeFolder}"
                    ]
                }
            }
        },
        {
            "Sid": "HomeDirObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:GetObjectVersion",
                "s3:GetObjectACL",
                "s3:PutObjectACL"
            ],
            "Resource": "arn:aws:s3:::${transfer:HomeDirectory}/*"
        }
    ]
}
```

**참고**  
위의 정책 예에서는 사용자의 홈 디렉터리가 디렉터리임을 나타내기 위해 후행 슬래시를 포함하도록 설정된 것으로 가정합니다. 그 반면에 후행 슬래시가 없이 사용자의 `HomeDirectory`를 설정하는 경우에는 이를 정책의 일부로 포함해야 합니다.

이전 예 정책에서, `transfer:HomeFolder`, `transfer:HomeBucket`, `transfer:HomeDirectory` 정책 파라미터의 사용을 기억해 두세요. 이러한 파라미터는 [HomeDirectory](https://docs.aws.amazon.com/transfer/latest/APIReference/API_CreateUser.html#TransferFamily-CreateUser-request-HomeDirectory) 및 [API Gateway 메서드 구현](authentication-api-gateway.md#authentication-api-method)에 설명된 대로 사용자에 맞게 구성된 `HomeDirectory`을 위해 설정됩니다 이러한 파라미터의 정의는 다음과 같습니다.
+ `transfer:HomeBucket` 파라미터는 `HomeDirectory`의 첫 번째 구성 요소로 대체됩니다.
+ `transfer:HomeFolder` 파라미터가 `HomeDirectory` 파라미터의 나머지 부분으로 대체됩니다. 
+ `transfer:HomeDirectory` 파라미터는 `Resource` 명령문에서 S3 Amazon 리소스 이름 (ARN)의 일부로 사용할 수 있도록 선행 슬래시(`/`)가 제거되었습니다.

**참고**  
 귀하가 논리적 디렉터리를 사용하는 경우—즉 사용자의 `homeDirectoryType`가 `LOGICAL`인 경우—이러한 정책 파라미터(`HomeBucket`, `HomeDirectory`, 및 `HomeFolder`)는 지원되지 않습니다.

예를 들어, Transfer Family 사용자에 대해 구성된 `HomeDirectory` 파라미터가 `/home/bob/amazon/stuff/`(이)라고 가정해 보겠습니다.
+ `transfer:HomeBucket`를 `/home`(으)로 설정합니다.
+ `transfer:HomeFolder`를 `/bob/amazon/stuff/`(으)로 설정합니다.
+ `transfer:HomeDirectory`는 `home/bob/amazon/stuff/`가 됩니다.

첫 번째 `"Sid"`은(는) 사용자가 `/home/bob/amazon/stuff/`부터 시작하여 모든 디렉터리를 나열할 수 있게 해 줍니다.

두 번째 `"Sid"`은(는) 동일한 경로인 `/home/bob/amazon/stuff/`에 대한 사용자 `put` 및 `get` 액세스를 제한합니다.

## 읽기/쓰기 액세스 정책의 예
<a name="read-write-access"></a>

**Amazon S3 버킷에 대한 읽기/쓰기 권한 부여**  
에 대한 다음 예제 정책은 Amazon S3 버킷의 객체에 대한 읽기/쓰기 액세스 권한을 AWS Transfer Family 부여합니다.

다음 사항에 유의하세요.
+ `amzn-s3-demo-bucket`을 Amazon S3 버킷 이름으로 바꿉니다.
+ `GetObjectACL` 및 `PutObjectACL` 명령문은 크로스 계정 액세스를 활성화할 필요가 있는 경우에만 요구됩니다. 예컨대, Transfer Family 서버가 다른 계정의 버킷에 액세스할 필요가 있는 경우입니다.
+ `GetObjectVersion` 및 `DeleteObjectVersion` 보고서는 액세스 중인 Amazon S3 버킷에서 버전 관리가 활성화된 경우에만 필요합니다.
**참고**  
버킷에 버전 관리를 ** 활성화한 경우 Amazon S3에서 버전 관리만 일시 중지하고 완전히 끌 수는 없으므로 이러한 권한이 필요합니다. 자세한 내용은 [버전 관리되지 않음, 버전 관리 활성화 및 버전 관리가 일시 중지된 버킷을 참조하세요](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html#versioning-states).

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListingOfUserFolder",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Sid": "HomeDirObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectTagging",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion", 
                "s3:GetObjectVersion",
                "s3:GetObjectVersionTagging",
                "s3:GetObjectACL",
                "s3:PutObjectACL"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

**Amazon EFS 파일 시스템의 파일에 대한 파일 시스템 액세스 권한 부여**  


**참고**  
정책 외에도 POSIX 파일 권한이 적절한 액세스를 허용하고 있는지도 확인해야 합니다. 자세한 내용은 *Amazon Elastic File System 사용 설명서*의 [NFS(네트워크 파일 시스템) 수준에서 사용자, 그룹, 권한 작업](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs-nfs-permissions.html)을 참조하세요.

다음 예 정책은 루트 파일 시스템에 Amazon EFS 파일 시스템의 파일에 대한 액세스 권한을 부여합니다.

**참고**  
다음 예에서 *리전*을 해당 리전으로, *account-id*를 파일이 있는 계정으로, *file-system-id*를 Amazon Elastic File System(Amazon EFS)의 ID로 바꾸세요.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RootFileSystemAccess",
            "Effect": "Allow",
            "Action": [
                "elasticfilesystem:ClientRootAccess",
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-1:123456789012:file-system/file-system-id"
        }
    ]
}
```

다음 예 정책은 Amazon EFS 파일 시스템의 파일에 대한 사용자 파일 시스템 액세스 권한을 부여합니다.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "UserFileSystemAccess",
            "Effect": "Allow",
            "Action": [
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-1:123456789012:file-system/file-system-id"
        }
    ]
}
```