

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

# Amplify 애플리케이션에서 IAM 역할 사용
<a name="add-IAM-roles"></a>

IAM 역할은 특정 권한을 가진 IAM ID입니다. 역할의 권한은 해당 ID가 AWS에서 수행할 수 있는 작업과 수행할 수 없는 작업을 결정합니다. AWS 계정 에서 IAM 역할을 생성하고 이를 사용하여 Amplify Hosting에 권한을 위임할 수 있습니다. 역할에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)을 참조하세요.

Amplify Hosting이 대신 작업을 수행하거나 다른 AWS 리소스에 액세스하는 컴퓨팅 코드를 실행할 수 있도록 권한을 부여하기 위해 다음 유형의 IAM 역할을 사용할 수 있습니다.

**IAM 서비스 역할**  
Amplify가 사용자를 대신하여 작업을 수행할 때 이 역할을 사용합니다. 백엔드 리소스가 있는 애플리케이션에는 필수 역할입니다.

**IAM SSR 컴퓨팅 역할**  
서버 측 렌더링(SSR) 애플리케이션이 특정 AWS 리소스에 안전하게 접근할 수 있도록 허용합니다.

**IAM SSR CloudWatch Logs 역할**  
SSR 앱을 배포할 때 Amplify가 Amazon CloudWatch Logs에 액세스할 수 있도록 Amplify가 수임하는 IAM 서비스 역할이 앱에 필요합니다.

**Topics**
+ [백엔드 리소스를 배포할 권한을 가진 서비스 역할 추가](amplify-service-role.md)
+ [AWS 리소스에 대한 액세스를 허용하는 SSR 컴퓨팅 역할 추가](amplify-SSR-compute-role.md)
+ [CloudWatch Logs에 액세스할 수 있는 권한을 가진 서비스 역할 추가](cloudwatch-logs-role.md)

# 백엔드 리소스를 배포할 권한을 가진 서비스 역할 추가
<a name="amplify-service-role"></a>

Amplify에는 프론트엔드와 함께 백엔드 리소스를 배포할 수 있는 권한이 필요합니다. 서비스 역할을 사용하여 이를 수행합니다. 서비스 역할은 Amplify Hosting에 사용자를 대신하여 백엔드를 배포, 생성 및 관리할 수 있는 권한을 제공하는 AWS Identity and Access Management (IAM) 역할입니다.

새 애플리케이션을 생성할 때 앱에 IAM 서비스 역할이 필요한 경우, Amplify Hosting이 자동으로 서비스 역할을 생성하도록 허용하거나 사용자가 이미 생성한 IAM 역할을 선택할 수 있습니다. 이 섹션에서는 Amplify 애플리케이션이 백엔드를 배포하고 백엔드를 배포, 생성, 관리하는 데 필요한 리소스에 대한 직접 액세스를 명시적으로 허용하는 계정 관리 권한이 있는 Amplify 서비스 역할을 생성합니다.

## IAM 콘솔에서 Amplify 서비스 역할 만들기
<a name="create-service-role"></a>

**서비스 역할을 생성하는 방법**

1.  [IAM 콘솔을 열고](https://console.aws.amazon.com/iam/home?#/roles) 왼쪽 탐색 모음에서 **역할**을 선택한 다음, **역할 생성**을 선택합니다.

1. **신뢰할 수 있는 엔터티 선택** 페이지에서 **AWS 서비스**를 선택합니다. **사용 사례**에서 **Amplify - 백엔드 배포**와 **다음**을 차례로 선택합니다.

1. **권한 추가** 페이지에서 **다음**을 선택합니다.

1. **이름, 보기 및 생성** 페이지에서 **역할 이름**에 **AmplifyConsoleServiceRole-AmplifyRole**과 같은 의미 있는 이름을 입력합니다.

1. 모든 기본값을 수락하고 **역할 생성**을 선택합니다.

1. Amplify 콘솔로 돌아가 역할을 앱에 연결합니다.
   + 새 앱을 배포하는 경우 다음을 수행합니다.

     1. 서비스 역할 목록을 새로 고칩니다.

     1. 방금 생성한 역할을 선택합니다. 예를 들어 **AmplifyConsoleServiceRole-AmplifyRole**처럼 표시되어야 합니다.

     1. **다음**을 선택하고 단계에 따라 앱 배포를 완료합니다.
   + 기존 앱이 있는 경우 다음을 수행합니다.

     1. 탐색 창에서 **앱 설정**을 선택한 다음 **IAM 역할**을 선택합니다.

     1. **IAM 역할** 페이지의 **서비스 역할** 섹션에서 **편집**을 선택합니다.

     1. **서비스 역할** 페이지의 **서비스 역할** 목록에서 방금 생성한 역할을 선택합니다.

     1. **저장**을 선택합니다.

1. 이제 Amplify에는 앱을 위한 백엔드 리소스를 배포할 수 있는 권한이 있습니다.

## 혼동된 대리자를 방지하기 위해 서비스 역할의 신뢰 정책 편집
<a name="confused-deputy-prevention"></a>

혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다. 자세한 내용은 [교차 서비스 혼동된 대리자 방지](cross-service-confused-deputy-prevention.md) 단원을 참조하십시오.

현재 `Amplify-Backend Deployment` 서비스 역할에 대한 기본 신뢰 정책은 `aws:SourceArn` 및 `aws:SourceAccount` 글로벌 조건 컨텍스트 키를 적용하여 혼동된 대리자를 방지합니다. 하지만 이전에 `Amplify-Backend Deployment` 역할을 계정에 생성한 경우에는 역할의 신뢰 정책을 업데이트하여 이러한 조건을 추가함으로써 혼동된 대리자를 방지할 수 있습니다.

다음 예제를 사용하여 계정의 앱에 대한 액세스를 제한할 수 있습니다. 예제에서 리전 및 애플리케이션 ID를 실제 정보로 바꿉니다.

```
"Condition": {
      "ArnLike": {
        "aws:SourceArn": "arn:aws:amplify:us-east-1:123456789012:apps/*"
      },
      "StringEquals": {
        "aws:SourceAccount": "123456789012"
      }
    }
```

를 사용하여 역할의 신뢰 정책을 편집하는 방법에 대한 지침은 *IAM 사용 설명서*의 [역할 수정(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html)을 AWS Management Console참조하세요.

# AWS 리소스에 대한 액세스를 허용하는 SSR 컴퓨팅 역할 추가
<a name="amplify-SSR-compute-role"></a>

이 통합을 통해 IAM 역할을 Amplify SSR 컴퓨팅 서비스에 할당해 서버 측 렌더링(SSR) 애플리케이션이 해당 역할의 권한에 따라 특정 AWS 리소스에 안전하게 액세스할 수 있도록 할 수 있습니다. 예를 들어 할당된 IAM 역할에 정의된 권한에 따라 앱의 SSR 컴퓨팅 함수가 Amazon Bedrock 또는 Amazon S3 버킷과 같은 다른 AWS 서비스 또는 리소스에 안전하게 액세스하도록 허용할 수 있습니다.

IAM SSR 컴퓨팅 역할은 임시 자격 증명을 제공하므로, 환경 변수에 장기적인 보안 자격 증명을 하드코딩할 필요가 없습니다. IAM SSR 컴퓨팅 역할을 사용하면 가능한 경우 최소 권한 부여 및 단기 자격 증명 사용의 AWS 보안 모범 사례에 부합합니다.

이 섹션의 후반부 지침에서는 사용자 지정 권한이 포함된 정책을 생성하고 해당 정책을 역할에 연결하는 방법을 설명합니다. 역할을 생성할 때, Amplify가 역할을 수임할 수 있도록 허용하는 사용자 지정 신뢰 정책을 연결해야 합니다. 신뢰 관계가 올바르게 정의되지 않으면 역할을 추가하려 할 때 오류가 발생합니다. 다음 사용자 지정 신뢰 정책은 Amplify가 역할을 수임할 수 있도록 권한을 부여합니다.

------
#### [ JSON ]

****  

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

------

Amplify 콘솔, AWS SDKs 또는를 사용하여의 IAM 역할을 기존 SSR 애플리케이션 AWS 계정 과 연결할 수 있습니다 AWS CLI. 연결하는 역할은 Amplify SSR 컴퓨팅 서비스와 자동으로 연결되어 다른 AWS 리소스에 액세스할 수 있도록 지정한 권한을 부여합니다. 애플리케이션의 요구 사항이 시간이 지나면서 변경되더라도, 연결된 IAM 역할을 수정하여 애플리케이션을 재배포하지 않고도 권한을 조정할 수 있습니다. 이는 유연성을 제공하고 애플리케이션의 가동 중지 시간을 줄여줍니다.

**중요**  
사용자는 애플리케이션이 보안 및 규정 준수 요구 사항을 충족하도록 구성할 책임이 있습니다. 여기에는 SSR 컴퓨팅 역할 관리가 포함되며, 사용 사례를 지원하는 데 필요한 최소 권한만 부여하도록 역할을 구성해야 합니다. 자세한 내용은 [IAM SSR 컴퓨팅 역할 보안 관리](#managing-compute-role-security) 단원을 참조하십시오.

## IAM 콘솔에서 SSR 컴퓨팅 역할 생성
<a name="create-SSR-compute-role-IAM-console"></a>

Amplify 애플리케이션에 IAM SSR 컴퓨팅 역할을 연결하기 전에, 해당 역할은 AWS 계정내에 이미 존재해야 합니다. 이 섹션에서는 특정 AWS 리소스에 액세스할 수 있도록 Amplify가 사용할 수 있는 IAM 정책을 생성하고 이를 역할에 연결하는 방법을 설명합니다.

IAM 역할을 생성할 때 *최소 권한을* 부여하는 AWS 모범 사례를 따르는 것이 좋습니다. IAM SSR 컴퓨팅 역할은 SSR 컴퓨팅 함수에서만 호출되므로, 코드 실행에 필요한 권한만 부여해야 합니다.

 AWS Management Console AWS CLI또는 SDKs를 사용하여 IAM에서 정책을 생성할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [고객 관리형 정책으로 사용자 지정 IAM 권한 정의](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)를 참조하세요.

다음 지침은 IAM 콘솔을 사용하여 Amplify 컴퓨팅 서비스에 부여할 권한을 정의하는 IAM 정책을 생성하는 방법을 보여줍니다.

**IAM 콘솔 JSON 정책 편집기를 사용하여 정책을 생성하려면**

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

1. 왼쪽의 탐색 창에서 **정책**을 선택합니다.

1. **정책 생성**을 선택합니다.

1. **정책 편집기** 섹션에서 **JSON** 옵션을 선택합니다.

1. JSON 정책 문서를 입력하거나 붙여 넣습니다.

1. 정책에 권한 추가를 완료했으면 **다음**을 선택합니다.

1. **검토 및 생성** 페이지에서 생성하는 정책에 대한 **정책 이름**과 **설명**(선택 사항)을 입력합니다. **이 정책에 정의된 권한**을 검토하여 정책이 부여한 권한을 확인합니다.

1. **정책 생성**을 선택하고 새로운 정책을 저장합니다.

정책을 생성한 후 다음 지침에 따라 정책을 IAM 역할에 연결합니다.

**특정 AWS 리소스에 Amplify 권한을 부여하는 역할을 생성하려면**

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

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

1. **사용자 지정 신뢰 정책** 역할 유형을 선택합니다.

1. **사용자 지정 신뢰 정책** 섹션에서 역할의 사용자 지정 신뢰 정책을 입력합니다. 역할 신뢰 정책은 필수이며, 해당 역할을 수임할 수 있는 보안 주체를 정의합니다.

   다음 신뢰 정책을 복사하여 붙여넣으면 Amplify 서비스가 이 역할을 수임할 수 있는 권한이 부여됩니다.

------
#### [ JSON ]

****  

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

------

1. 정책 검증 동안 생성된 모든 보안 경고, 오류 또는 일반 경고를 해결하고 **다음**을 선택합니다.

1. **권한 추가** 페이지에서 이전 단계에서 생성한 정책 이름을 검색한 후 선택합니다. 그런 다음, **다음**을 선택합니다.

1. **역할 이름(Role name)**에 역할 이름을 입력합니다. 역할 이름은 내에서 고유해야 합니다 AWS 계정. 대/소문자를 구분하지 않습니다. 예를 들어, 이름이 **PRODROLE**과 **prodrole**, 두 가지로 지정된 역할을 만들 수는 없습니다. 다른 AWS 리소스가 역할을 참조할 수 있으므로 역할이 생성된 후에는 역할 이름을 편집할 수 없습니다.

1. (선택 사항)**설명**에 새 역할에 대한 설명을 입력합니다.

1. (선택 사항) **1단계: 신뢰할 수 있는 엔터티 선택** 또는 **2단계: 권한 추가** 섹션에서 **편집**을 선택하여 역할의 사용자 지정 정책과 권한을 편집합니다.

1. 역할을 검토한 다음 **역할 생성**을 선택합니다.

## Amplify 앱에 IAM SSR 컴퓨팅 역할 추가
<a name="add-ssr-compute-role-to-app"></a>

에서 IAM 역할을 생성한 후 Amplify 콘솔에서 이를 앱과 연결할 AWS 계정수 있습니다.

**Amplify 콘솔에서 앱에 SSR 컴퓨팅 역할을 추가하려면**

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

1. **모든 앱** 페이지에서 컴퓨팅 역할을 추가할 앱의 이름을 선택합니다.

1. 탐색 창에서 **앱 설정**을 선택한 다음 **IAM 역할**을 선택합니다.

1. **컴퓨팅 역할** 섹션에서 **편집**을 선택합니다.

1. **기본 역할** 목록에서 연결하려는 역할의 이름을 검색하고 선택합니다. 이 예제에서는 이전 단계에서 생성한 역할의 이름을 선택할 수 있습니다. 기본적으로 선택한 역할은 앱의 모든 브랜치와 연결됩니다.

   역할의 신뢰 관계가 올바르게 정의되지 않은 경우, 오류가 발생하며 역할을 추가할 수 없습니다.

1. (선택 사항) 애플리케이션이 퍼블릭 리포지토리에 있고 자동 브랜치 생성을 사용하거나 pull 요청의 웹 미리 보기가 활성화된 경우 앱 수준 역할을 사용하지 않는 것이 좋습니다. 대신, 특정 리소스에 액세스가 필요한 브랜치에만 컴퓨팅 역할을 연결합니다. 기본 앱 수준 동작을 재정의하고 특정 브랜치에 역할을 연결하려면 다음 단계를 따릅니다.

   1. **브랜치**에는 사용할 브랜치의 이름을 선택합니다.

   1. **컴퓨팅 역할**에는 브랜치와 연결할 역할의 이름을 선택합니다.

1. **저장**을 선택합니다.

## IAM SSR 컴퓨팅 역할 보안 관리
<a name="managing-compute-role-security"></a>

보안은 AWS 와 사용자 간의 공동 책임입니다. 사용자는 애플리케이션이 보안 및 규정 준수 요구 사항을 충족하도록 구성할 책임이 있습니다. 여기에는 SSR 컴퓨팅 역할 관리가 포함되며, 사용 사례를 지원하는 데 필요한 최소 권한만 부여하도록 역할을 구성해야 합니다. 지정한 SSR 컴퓨팅 역할의 자격 증명은 SSR 함수 런타임 시 즉시 사용 가능합니다. SSR 코드가 이러한 자격 증명을 의도적으로, 버그로 인해, 또는 원격 코드 실행(RCE)을 허용하는 방식으로 노출하면, 권한이 없는 사용자가 SSR 역할 및 해당 권한에 액세스할 수 있습니다.

퍼블릭 리포지토리의 애플리케이션이 SSR 컴퓨팅 역할과 pull 요청에 대한 자동 브랜치 생성 또는 웹 미리 보기를 사용하는 경우 역할에 액세스할 수 있는 브랜치를 신중하게 관리해야 합니다. 앱 수준 역할을 사용하는 것은 권장하지 않습니다. 대신 브랜치 수준에서 컴퓨팅 역할을 연결하는 것이 좋습니다. 이를 통해 특정 리소스에 액세스해야 하는 브랜치에만 필요한 권한을 부여할 수 있습니다.

역할의 자격 증명이 노출된 경우, 다음 조치를 수행하여 역할의 자격 증명에 대한 모든 액세스를 제거하세요.

1. **모든 세션 취소**

   역할의 자격 증명에 대한 모든 권한을 즉시 취소하는 방법은 [ IAM 역할 임시 보안 자격 증명 취소](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html)를 참조하세요.

1. **Amplify 콘솔에서 역할 삭제**

   이 작업은 즉시 적용됩니다. 애플리케이션을 다시 배포할 필요가 없습니다.

**Amplify 콘솔에서 컴퓨팅 역할을 삭제하려면**

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

1. **모든 앱** 페이지에서 컴퓨팅 역할을 제거할 앱의 이름을 선택합니다.

1. 탐색 창에서 **앱 설정**을 선택한 다음 **IAM 역할**을 선택합니다.

1. **컴퓨팅 역할** 섹션에서 **편집**을 선택합니다.

1. **기본 역할을** 삭제하려면 역할 이름 오른쪽에 있는 **X**를 선택합니다.

1. **저장**을 선택합니다.

# CloudWatch Logs에 액세스할 수 있는 권한을 가진 서비스 역할 추가
<a name="cloudwatch-logs-role"></a>

Amplify는 SSR 런타임에 대한 정보를 사용자 AWS 계정의 Amazon CloudWatch Logs로 보냅니다. SSR 앱을 배포할 때 Amplify가 사용자를 대신하여 다른 서비스를 호출할 때 맡는 IAM 서비스 역할이 앱에 필요합니다. Amplify Hosting 컴퓨팅이 자동으로 서비스 역할을 생성하도록 허용하거나 사용자가 생성한 역할을 지정할 수 있습니다.

Amplify에서 IAM 역할을 생성하도록 허용하면 해당 역할에 CloudWatch Logs를 생성할 권한이 부여됩니다. IAM 역할을 직접 생성하는 경우, Amplify가 Amazon CloudWatch Logs에 액세스할 수 있도록 하려면 정책에 다음 권한을 추가해야 합니다.

```
logs:CreateLogStream
logs:CreateLogGroup
logs:DescribeLogGroups
logs:PutLogEvents
```