

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

# 구성 가이드
<a name="configuration-guide"></a>

이 구성 가이드는 AWS 제품에서 Research and Engineering Studio를 추가로 사용자 지정하고 통합하는 방법에 대한 배포 후 지침을 기술 대상에게 제공합니다.

**Topics**
+ [자격 증명 관리](manage-users.md)
+ [하위 도메인 생성](create-subdomains.md)
+ [ACM 인증서 생성](acm-certificate.md)
+ [Amazon CloudWatch Logs](log-groups.md)
+ [사용자 지정 권한 경계 설정](permission-boundaries.md)
+ [RES 지원 AMIs 구성](res-ready-ami.md)
+ [구성 가능한 DCV 세션 검증 임계값](dcv-session-validation-thresholds.md)
+ [RES 설치 후 사용자 지정 도메인 설정](setup-custom-domain-after-install.md)

# 자격 증명 관리
<a name="manage-users"></a>

Research and Engineering Studio는 모든 SAML 2.0 준수 자격 증명 공급자를 사용할 수 있습니다. Amazon Cognito를 기본 사용자 디렉터리로 사용하여 사용자가 Cognito 사용자 ID로 웹 포털 및 Linux 기반 VDIs에 로그인할 수 있도록 하려면 섹션을 참조하세요[Amazon Cognito 사용자 설정](setting-up-cognito-users.md). 외부 리소스를 사용하여 RES를 배포했거나 IAM Identity Center를 사용할 계획인 경우 섹션을 참조하세요[IAM Identity Center를 사용하여 Single Sign-On(SSO) 설정](sso-idc.md). 자체 SAML 2.0 호환 자격 증명 공급자가 있는 경우 섹션을 참조하세요[Single Sign-On(SSO)을 위한 자격 증명 공급자 구성](configure-id-federation.md).

**Topics**
+ [Amazon Cognito 사용자 설정](setting-up-cognito-users.md)
+ [Active Directory 동기화](active-directory-sync.md)
+ [IAM Identity Center를 사용하여 Single Sign-On(SSO) 설정](sso-idc.md)
+ [Single Sign-On(SSO)을 위한 자격 증명 공급자 구성](configure-id-federation.md)
+ [사용자의 암호 설정](setting-user-passwords.md)

# Amazon Cognito 사용자 설정
<a name="setting-up-cognito-users"></a>

Research and Engineering Studio(RES)를 사용하면 Amazon Cognito를 기본 사용자 디렉터리로 설정할 수 있습니다. 이를 통해 사용자는 Amazon Cognito 사용자 자격 증명을 사용하여 웹 포털 및 Linux 기반 VDIs에 로그인할 수 있습니다. 관리자는 AWS 콘솔에서 csv 파일을 사용하여 여러 사용자를 사용자 풀로 가져올 수 있습니다. 대량 사용자 가져오기에 대한 자세한 내용은 *Amazon Cognito 개발자 안내서*의 [CSV 파일에서 사용자 풀로 사용자 가져오기](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-using-import-tool.html)를 참조하세요. RES는 Amazon Cognito 기반 기본 사용자 디렉터리와 SSO를 함께 사용할 수 있도록 지원합니다.

## 관리 설정
<a name="setting-up-cognito-users-admin"></a>

RES 관리자는 Amazon Cognito를 사용자 디렉터리로 사용하도록 RES 환경을 구성하려면 **환경** 관리 페이지에서 액세스할 수 있는 **자격 증명 관리** 페이지의 **사용자 디렉터리로 Amazon Cognito 사용** 버튼을 전환합니다. 사용자가 자체 등록하도록 허용하려면 동일한 페이지에서 **사용자 자체 등록** 버튼을 전환합니다.

![\[cognito 디렉터리 설정을 보여주는 자격 증명 관리 페이지\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/id-management-cognito-directory.png)


## 사용자 가입/로그인 흐름
<a name="setting-up-cognito-users-user-signin"></a>

**사용자 자체 등록**이 활성화된 경우 사용자에게 웹 애플리케이션의 URL을 제공할 수 있습니다. 여기에서 사용자는 **아직 사용자가 아니십니까?라는 옵션을 찾을 수 있습니다. 여기에서 가입**합니다.

![\[자체 등록 옵션이 있는 사용자 로그인 페이지\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/user-sign-up.png)


## 가입 흐름
<a name="setting-up-cognito-users-signup"></a>

**아직 사용자가 아님을 선택한 사용자 여기에 가입**하면 계정을 생성할 이메일과 암호를 입력하라는 메시지가 표시됩니다.

![\[사용자 자체 등록을 위한 계정 생성 페이지\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/create-account.png)


가입 흐름의 일부로 사용자에게 이메일에 수신된 확인 코드를 입력하여 가입 프로세스를 완료하라는 메시지가 표시됩니다.

![\[확인 코드 항목 페이지\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/verify-email.png)


자체 가입이 비활성화된 경우 사용자는 가입 링크를 볼 수 없습니다. 관리자는 RES 외부에서 Amazon Cognito의 사용자를 구성해야 합니다. (*Amazon Cognito 개발자 안내서*의 [관리자로 사용자 계정 생성을](https://docs.aws.amazon.com/cognito/latest/developerguide/how-to-create-user-accounts.html) 참조하세요.)

![\[확인 코드 항목 페이지\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/user-sign-in.png)


## 로그인 페이지 옵션
<a name="setting-up-cognito-users-login"></a>

SSO와 Amazon Cognito가 모두 활성화된 경우 **조직 SSO로 로그인** 옵션이 표시됩니다. 사용자가 해당 옵션을 클릭하면 SSO 로그인 페이지로 다시 라우팅됩니다. 기본적으로 사용자는 Amazon Cognito가 활성화된 경우 Amazon Cognito로 인증합니다.

![\[조직 SSO를 사용하여 가입, 계정 확인 또는 로그인하는 옵션이 있는 사용자 로그인 페이지\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/org-sso-sign-in.png)


## 제약 조건
<a name="setting-up-cognito-users-constraints"></a>
+ Amazon Cognito **그룹 이름은** 최대 6자일 수 있으며 소문자만 허용됩니다.
+ Amazon Cognito 가입은 사용자 이름이 동일하지만 도메인 주소가 다른 두 개의 이메일 주소를 허용하지 않습니다.
+ Active Directory와 Amazon Cognito가 모두 활성화되어 있고 시스템에서 중복 사용자 이름을 감지하면 Active Directory 사용자만 인증할 수 있습니다. 관리자는 Amazon Cognito와 Active Directory 간에 중복 사용자 이름을 구성하지 않도록 조치를 취해야 합니다.
+ RES는 Windows 인스턴스에 대한 Amazon Cognito 기반 인증을 지원하지 않으므로 Cognito 사용자는 Windows 기반 VDIs를 시작할 수 없습니다.

## Amazon Cognito 사용자의 관리자 그룹
<a name="admin-group-cognito-users-sync"></a>

기본적으로 RES는 `admins` 그룹 관리자 권한 내에서 Cognito 사용자에게 권한을 부여합니다. Cognito `admins` 그룹에 사용자를 추가하려면:

1. [Amazon Cognito 콘솔](https://console.aws.amazon.com/cognito/home)로 이동하여 RES에 사용되는 기존 사용자 풀을 선택합니다.

1. **사용자 관리** **아래의 그룹**으로 이동한 다음 **그룹 생성을 선택합니다.**

1. **그룹 생성** 페이지의 **그룹 이름**에를 입력합니다`admins`.

1. 생성한 `admins` 그룹을 선택하고 **그룹에 사용자 추가**를 선택하여 Cognito 사용자를 추가합니다.

1. 에 따라 Cognito 동기화를 수동으로 시작합니다[동기화](#setting-up-cognito-users-sync).

Amazon Cognito 동기화에 성공하면 `admins` 그룹에 추가된 사용자에게 관리자 권한이 부여됩니다.

## 동기화
<a name="setting-up-cognito-users-sync"></a>

RES는 매시간 Amazon Cognito의 사용자 및 그룹 정보와 데이터베이스를 동기화합니다. "관리자" 그룹에 속한 모든 사용자에게는 VDIs에 sudo 권한이 부여됩니다.

Lambda 콘솔에서 수동으로 동기화를 시작할 수도 있습니다.

**동기화 프로세스를 수동으로 시작합니다.**

1. [Lambda 콘솔](https://console.aws.amazon.com/lambda)을 엽니다.

1. Cognito 동기화 Lambda를 검색합니다. 이 Lambda는 명명 규칙을 따릅니다`{RES_ENVIRONMENT_NAME}_cognito-sync-lambda`.

1. **테스트를** 선택합니다.

1. **테스트 이벤트** 섹션에서 오른쪽 상단의 **테스트** 버튼을 선택합니다. 이벤트 본문 형식은 중요하지 않습니다.

## Cognito의 보안 고려 사항
<a name="setting-up-cognito-users-security"></a>

2024년 12월 릴리스 이전에는 Amazon Cognito Plus 플랜 기능의 일부인 [사용자 활동 로깅](https://docs.aws.amazon.com/cognito/latest/developerguide/feature-plans-features-plus.html)이 기본적으로 활성화되었습니다. 이 기능은 RES를 시도하려는 고객의 비용을 절감하기 위해 기준 배포에서 제거되었습니다. 조직의 클라우드 보안 설정에 맞게 필요에 따라이 기능을 다시 활성화할 수 있습니다.

# Active Directory 동기화
<a name="active-directory-sync"></a>



## 런타임 구성
<a name="active-directory-sync-runtime"></a>

Active Directory(AD)와 관련된 모든 AWS CloudFormation 파라미터는 설치 중에 선택 사항입니다.

![\[Active Directory 선택적 세부 정보\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/active-directory-details.png)


런타임에 제공된 보안 암호 ARN(예: `ServiceAccountCredentialsSecretArn` 또는 `DomainTLSCertificateSecretArn`)의 경우 RES가 보안 암호 값을 읽을 수 있는 권한을 얻으려면 보안 암호에 다음 태그를 추가해야 합니다.
+ 키: `res:EnvironmentName`, 값: `<your RES environment name>`
+ 키: `res:ModuleName`, 값: `directoryservice`

웹 포털의 모든 AD 구성 업데이트는 예약된 다음 AD 동기화(시간별) 중에 자동으로 선택됩니다. 사용자는 AD 구성을 변경한 후 SSO를 다시 구성해야 할 수 있습니다(예: 다른 AD로 전환하는 경우).

초기 설치 후 관리자는 자격 **증명 관리** 페이지의 RES 웹 포털에서 AD 구성을 보거나 편집할 수 있습니다.

![\[Active Directory 도메인 구성 설정 세부 정보\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/res-active-directory-domain.png)


![\[Active Directory 동기화 팝업\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/active-directory-synchronization.png)


### Active Directory 자동 조인
<a name="toggle-join-active-directory"></a>

관리자는 VDI 시작 중에 ** 디렉터리 도메인 조인 동작을 제어하도록 Active Directory 자동 ** 조인 설정을 구성할 수 있습니다.

 ** 구성 옵션: ** 
+  ** 활성화됨 **- 시작 중에 Windows 및 Linux VDIs에 자동으로 조인합니다.
+  ** 비활성화됨 ** - 자동 도메인 조인을 끕니다. Linux 인스턴스는 도메인 조인 유무에 관계없이 시작할 수 있습니다. Windows 인스턴스를 성공적으로 시작하려면 도메인 조인이 필요하므로 관리자는 사용자 지정 시작 스크립트에 도메인 조인 로직을 포함해야 합니다.

**중요**  
 이 설정을 비활성화하는 경우 Windows 인스턴스 사용자 지정 시작 스크립트에 필요한 도메인 조인 로직이 포함되어 있는지 확인합니다.

### 추가 설정
<a name="active-directory-sync-addl-settings"></a>

**필터**

관리자는 사용자 필터 및 그룹 필터 옵션을 사용하여 동기화할 **사용자** 또는 **그룹을** 필터링할 수 있습니다. 필터는 [LDAP 필터 구문](https://ldap.com/ldap-filters/)을 따라야 합니다. 예제 필터는 다음과 같습니다.

```
(sAMAccountname=<user>)
```

**사용자 지정 SSSD 파라미터**

관리자는 SSSD 파라미터와 값을 포함하는 키-값 페어 사전을 제공하여 클러스터 인스턴스에서 SSSD 구성 파일의 `[domain_type/DOMAIN_NAME]` 섹션에 쓸 수 있습니다. RES는 SSSD 업데이트를 자동으로 적용합니다. 즉, 클러스터 인스턴스에서 SSSD 서비스를 다시 시작하고 AD 동기화 프로세스를 트리거합니다.

몇 가지 일반적인 사용자 지정 SSSD 설정은 다음과 같습니다.
+ `enumerate` - 디렉터리 서비스의 모든 사용자 및 그룹 항목을 캐싱하려면 'true'로 설정합니다. 비활성화하면 사용자의 첫 로그인이 잠시 지연될 수 있습니다.
+ `ldap_id_mapping` - LDAP/AD 사용자 및 그룹 IDs를 Linux 시스템의 로컬 UIDs 및 GIDs에 매핑하려면 'true'로 설정합니다. 이를 활성화하면 기존 POSIX 스크립트 및 애플리케이션과의 호환성이 향상될 수 있습니다.

SSSD 구성 파일에 대한 전체 설명은의 Linux 맨 페이지를 참조하세요`SSSD`.

![\[추가 SSSD 구성\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/res-additional-sssd-config1.png)


SSSD 파라미터 및 값은 여기에 설명된 대로 RES SSSD 구성과 호환되어야 합니다.
+ `id_provider`는 RES에 의해 내부적으로 설정되며 수정해서는 안 됩니다.
+ `ldap_uri`, `ldap_search_base` `ldap_default_bind_dn` 및를 포함한 AD 관련 구성`ldap_default_authtok`은 제공된 다른 AD 구성을 기반으로 설정되며 수정해서는 안 됩니다.

다음 예제에서는 SSSD 로그에 대한 디버그 수준을 활성화합니다.

![\[입력된 새 키 및 값 페어를 보여주는 추가 SSSD 구성\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/res-additional-sssd-config2.png)


## 초기 AD 동기화 후 이메일 업데이트(릴리스 2025.09 이상)
<a name="ad-sync-update-email"></a>

활성 디렉터리 사용자의 이메일 주소가 변경된 경우 관리자는 AD 동기화를 수동으로 시작하거나 변경 사항이 픽업되어 RES에 동기화될 때까지 예약된 다음 AD 동기화를 기다릴 수 있습니다.

## 동기화를 수동으로 시작하거나 중지하는 방법(릴리스 2025.03 이상)
<a name="active-directory-sync-start-stop"></a>

**자격 증명 관리** 페이지로 이동하여 **Active Directory 도메인** 컨테이너에서 **AD 동기화 시작** 버튼을 선택하여 AD 동기화를 온디맨드로 트리거합니다.

![\[Active Directory 도메인 구성\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/res-ad-directory-sync1.png)


진행 중인 AD 동기화를 중지하려면 **Active Directory 도메인** 컨테이너에서 **AD 동기화 중지** 버튼을 선택합니다.

![\[동기화를 중지하는 옵션을 보여주는 Active Directory 도메인 구성 페이지\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/res-ad-directory-sync2.png)


**Active Directory 도메인** 컨테이너에서 AD 동기화 상태와 최신 동기화 시간을 확인할 수도 있습니다.

![\[최신 동기화 시간을 보여주는 Active Directory 도메인 구성 페이지\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/res-ad-directory-sync3.png)


## 동기화를 수동으로 실행하는 방법(릴리스 2024.12 및 2024.12.01)
<a name="active-directory-sync-manually"></a>

Active Directory 동기화 프로세스가 클러스터 관리자 인프라 호스트에서 백그라운드의 일회성 Amazon Elastic Container Service(ECS) 작업으로 이동되었습니다. 프로세스는 1시간마다 실행되도록 예약되어 있으며 진행 중인 `<res-environment-name>-ad-sync-cluster` 클러스터 아래의 Amazon ECS 콘솔에서 실행 중인 ECS 작업을 찾을 수 있습니다.

**수동으로 시작하려면:**

1. [Lambda 콘솔](https://console.aws.amazon.com/lambda)로 이동하여 라는 Lambda를 검색합니다`<res-environment>-scheduled-ad-sync`.

1. Lambda 함수를 열고 **테스트**로 이동합니다.

1. **이벤트 JSON**에 다음을 입력합니다.

   ```
   {
       "detail-type": "Scheduled Event"
   }
   ```

1. **테스트**를 선택합니다.

1. **CloudWatch** → 로그 **그룹 →에서 실행 중인 AD 동기화 작업의 로그를 관찰합니다**`/<environment-name>/ad-sync`. 실행 중인 각 ECS 작업의 로그가 표시됩니다. 로그를 보려면 가장 최근를 선택합니다.

**참고**  
AD 파라미터를 변경하거나 AD 필터를 추가하면 RES는 새로 지정된 파라미터를 고려하여 새 사용자를 추가하고 이전에 동기화되어 더 이상 LDAP 검색 공간에 포함되지 않은 사용자를 제거합니다.
RES는 프로젝트에 활성으로 할당된 사용자 또는 그룹을 제거할 수 없습니다. RES가 사용자를 환경에서 제거하도록 하려면 프로젝트에서 사용자를 제거해야 합니다.

## SSO 구성
<a name="active-directory-sync-sso-config"></a>

AD 구성이 제공된 후 사용자는 RES 웹 포털에 AD 사용자로 로그인할 수 있도록 SSO(Single Sign-On)를 설정해야 합니다. SSO 구성이 **일반 설정** 페이지에서 새 **자격 증명 관리** 페이지로 이동되었습니다. SSO 설정에 대한 자세한 내용은 섹션을 참조하세요[자격 증명 관리](manage-users.md).

# IAM Identity Center를 사용하여 Single Sign-On(SSO) 설정
<a name="sso-idc"></a>

관리형 Active Directory에 연결된 ID 센터가 아직 없는 경우 로 시작합니다[1단계: 자격 증명 센터 설정](#set-up-identity-center). 관리형 Active Directory와 연결된 ID 센터가 이미 있는 경우 로 시작합니다[2단계: 자격 증명 센터에 연결](#connect-identity-center).

**참고**  
GovCloud 리전에 배포하는 경우 Research and Engineering Studio를 AWS GovCloud (US) 배포한 파티션 계정에서 SSO를 설정합니다.

## 1단계: 자격 증명 센터 설정
<a name="set-up-identity-center"></a>

### IAM Identity Center 활성화
<a name="enabling-identity-center"></a>

1. [AWS Identity and Access Management 콘솔](https://console.aws.amazon.com/iam)에 로그인합니다.

1. **Identity Center**를 엽니다.

1. **활성화**를 선택합니다.

1. **로 활성화 AWS Organizations**를 선택합니다.

1. **계속**을 선택합니다.

**참고**  
관리형 Active Directory가 있는 리전과 동일한 리전에 있는지 확인합니다.

### 관리형 Active Directory에 IAM Identity Center 연결
<a name="connecting-identity-center-ad"></a>

IAM Identity Center를 활성화한 후 다음 권장 설정 단계를 완료합니다.

1. 탐색 창에서 **설정**을 선택합니다.

1. **자격 증명 소스**에서 **작업을** 선택하고 자격 **증명 소스 변경을** 선택합니다.

1. **기존 디렉터리**에서 디렉터리를 선택합니다.

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

1. 변경 사항을 검토하고 확인 상자에 **ACCEPT**를 입력합니다.

1. **ID 소스 변경**을 선택합니다.

### ID 센터에 사용자 및 그룹 동기화
<a name="syncing-identity-center"></a>

의 변경 사항이 [관리형 Active Directory에 IAM Identity Center 연결](#connecting-identity-center-ad) 완료되면 녹색 확인 배너가 나타납니다.

1. 확인 배너에서 **안내 설정 시작**을 선택합니다.

1. **속성 매핑 구성**에서 **다음을** 선택합니다.

1. **사용자** 섹션에서 동기화할 사용자를 입력합니다.

1. **추가**를 선택합니다.

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

1. 변경 사항을 검토한 다음 **구성 저장**을 선택합니다.

1. 동기화 프로세스는 몇 분 정도 걸릴 수 있습니다. 동기화하지 않는 사용자에 대한 경고 메시지가 표시되면 **동기화 재개**를 선택합니다.

### 사용자 활성화
<a name="enabling-users"></a>

1. 메뉴에서 **사용자를** 선택합니다.

1. 액세스를 활성화하려는 사용자(들)를 선택합니다.

1. **사용자 액세스 활성화**를 선택합니다.

## 2단계: 자격 증명 센터에 연결
<a name="connect-identity-center"></a>

### IAM Identity Center에서 애플리케이션 설정
<a name="setup-application-identity-center"></a>

1. [IAM Identity Center 콘솔](https://console.aws.amazon.com/singlesignon/)을 엽니다.

1. [**Applications**]를 선택합니다.

1. **애플리케이션 추가**를 선택합니다.

1. **설정 기본** 설정에서 **설정하려는 애플리케이션이 있습니다를** 선택합니다.

1. **애플리케이션 유형**에서 **SAML 2.0**을 선택합니다.

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

1. 사용하려는 표시 이름과 설명을 입력합니다.

1. **IAM Identity Center 메타데이터**에서 **IAM Identity Center SAML 메타데이터** 파일의 링크를 복사합니다. RES 포털로 IAM Identity Center를 구성할 때 필요합니다.

1. **애플리케이션 속성**에 **애플리케이션 시작 URL**을 입력합니다. 예를 들어 `<your-portal-domain>/sso`입니다.

1. **애플리케이션 ACS URL**에서 RES 포털의 리디렉션 URL을 입력합니다. 이를 찾으려면: 

   1. **환경 관리**에서 **일반 설정을** 선택합니다.

   1. **자격 증명 공급자** 탭을 선택합니다.

   1. **Single Sign-On**에서 **SAML 리디렉션 URL**을 찾을 수 있습니다.

1. **애플리케이션 SAML 대상**에서 Amazon Cognito URN을 입력합니다.

   URL을 생성하려면:

   1. RES 포털에서 **일반 설정을** 엽니다.

   1. **자격 증명 공급자** 탭에서 **사용자 풀 ID**를 찾습니다.

   1. 이 문자열에 **사용자 풀 ID**를 추가합니다.

      ```
      urn:amazon:cognito:sp:<user_pool_id>
      ```

1. Amazon Cognito URN을 입력한 후 **제출**을 선택합니다.

### 애플리케이션에 대한 속성 매핑 구성
<a name="configure-attribute-mappings"></a>

1. **Identity Center**에서 생성된 애플리케이션의 세부 정보를 엽니다.

1. **작업을** 선택한 다음 **속성 매핑 편집을** 선택합니다.

1. **제목**에 **\$1\$1user:email\$1**을 입력합니다.

1. **형식**에서 **emailAddress**를 선택합니다.

1. **새 속성 매핑 추가**를 선택합니다.

1. **애플리케이션의 사용자 속성에** 'email'을 입력합니다.

1. **IAM Identity Center의이 문자열 값 또는 사용자 속성에 매핑에서**를 입력합니다**\$1\$1user:email\$1**.

1. **형식**에 '지정되지 않음'을 입력합니다.

1. **변경 사항 저장**을 선택합니다.

### IAM Identity Center의 애플리케이션에 사용자 추가
<a name="add-users-to-application"></a>

1. Identity Center에서 생성된 애플리케이션에 **할당된 사용자를** 열고 **사용자 할당**을 선택합니다.

1. 애플리케이션 액세스를 할당할 사용자를 선택합니다.

1. **사용자 배정**를 선택합니다.

### RES 환경 내에서 IAM Identity Center 설정
<a name="setup-sso-environment"></a>

1. Research and Engineering Studio 환경의 **환경 관리**에서 **일반 설정을** 엽니다.

1. **자격 증명 공급자** 탭을 엽니다.

1. **Single Sign-On**에서 **편집**(**상태** 옆)을 선택합니다.

1. 다음 정보로 양식을 작성합니다.

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

   1. **공급자 이름**에 사용자에게 친숙한 이름을 입력합니다.

   1. **메타데이터 문서 엔드포인트 URL 입력을** 선택합니다.

   1. 중에 복사한 URL을 입력합니다[IAM Identity Center에서 애플리케이션 설정](#setup-application-identity-center).

   1. **공급자 이메일 속성**에 'email'을 입력합니다.

   1. **제출**을 선택합니다.

1. 페이지를 새로 고치고 **상태가** 활성화된 것으로 표시되는지 확인합니다.

# Single Sign-On(SSO)을 위한 자격 증명 공급자 구성
<a name="configure-id-federation"></a>

Research and Engineering Studio는 모든 SAML 2.0 자격 증명 공급자와 통합되어 RES 포털에 대한 사용자 액세스를 인증합니다. 이 단계에서는 선택한 SAML 2.0 자격 증명 공급자와 통합하는 지침을 제공합니다. IAM Identity Center를 사용하려는 경우 섹션을 참조하세요[IAM Identity Center를 사용하여 Single Sign-On(SSO) 설정](sso-idc.md).

**참고**  
사용자의 이메일은 IDP SAML 어설션 및 Active Directory에서 일치해야 합니다. 자격 증명 공급자를 Active Directory에 연결하고 주기적으로 사용자를 동기화해야 합니다.

**Topics**
+ [자격 증명 공급자 구성](#configure-id-federation_config-idp)
+ [자격 증명 공급자를 사용하도록 RES 구성](#configure-id-federation_config-res)
+ [비프로덕션 환경에서 ID 제공업체 구성](#configure-id-federation-demo-env)
+ [SAML IdP 문제 디버깅](#configure-id-federation_debug)

## 자격 증명 공급자 구성
<a name="configure-id-federation_config-idp"></a>

이 섹션에서는 RES Amazon Cognito 사용자 풀의 정보로 자격 증명 공급자를 구성하는 단계를 제공합니다.

1. RES는 RES 포털 및 프로젝트에 액세스할 수 있는 사용자 자격 증명이 있는 AD(AWS 관리형 AD 또는 자체 프로비저닝된 AD)가 있다고 가정합니다. AD를 자격 증명 서비스 공급자에 연결하고 사용자 자격 증명을 동기화합니다. ID 제공업체의 설명서를 확인하여 AD를 연결하고 사용자 ID를 동기화하는 방법을 알아봅니다. 예를 들어 사용 *AWS IAM Identity Center 설명서*의 [Active Directory를 ID 소스로 사용을](https://docs.aws.amazon.com/singlesignon/latest/userguide/gs-ad.html) 참조하세요.

1. ID 제공업체(IdP)에서 RES용 SAML 2.0 애플리케이션을 구성합니다. 이 구성에는 다음 파라미터가 필요합니다.
   + **SAML 리디렉션 URL** - IdP가 서비스 공급자에게 SAML 2.0 응답을 보내는 데 사용하는 URL입니다.
**참고**  
IdP에 따라 SAML 리디렉션 URL의 이름이 다를 수 있습니다.  
애플리케이션 URL
어설션 소비자 서비스(ACS) URL
ACS POST 바인딩 URL

**URL을 가져오려면**

     1. **관리자** 또는 **clusteradmin**으로 RES에 로그인합니다.

     1. **환경 관리** " **일반 설정** " **자격 증명 공급자**로 이동합니다.

     1. **SAML 리디렉션 URL**을 선택합니다.
   + **SAML 대상 URI** - 서비스 공급자 측 SAML 대상 개체의 고유 ID입니다.
**참고**  
IdP에 따라 SAML 대상 URI의 이름이 다를 수 있습니다.  
ClientID
애플리케이션 SAML 대상
SP 엔터티 ID

     다음 형식으로 입력을 제공합니다.

     ```
     urn:amazon:cognito:sp:user-pool-id
     ```

**SAML 대상 URI를 찾으려면**

     1. **관리자** 또는 **clusteradmin**으로 RES에 로그인합니다.

     1. **환경 관리** " **일반 설정** " **자격 증명 공급자**로 이동합니다.

     1. **사용자 풀 ID를** 선택합니다.

1. RES에 게시된 SAML 어설션에는 다음 필드/클레임이 사용자의 이메일 주소로 설정되어 있어야 합니다.
   + SAML 주체 또는 NameID
   + SAML 이메일

1. IdP는 구성을 기반으로 SAML 어설션에 필드/클레임을 추가합니다. RES에는 이러한 필드가 필요합니다. 대부분의 공급자는 기본적으로 이러한 필드를 자동으로 채웁니다. 구성해야 하는 경우 다음 필드 입력 및 값을 참조하세요.

   
   + **AudienceRestriction** -를 로 설정합니다`urn:amazon:cognito:sp:user-pool-id`. *user-pool-id*를 Amazon Cognito 사용자 풀의 ID로 바꿉니다.

     ```
     <saml:AudienceRestriction>
         <saml:Audience> urn:amazon:cognito:sp:user-pool-id
     </saml:AudienceRestriction>
     ```
   + **응답** -를 `InResponseTo`로 설정합니다`https://user-pool-domain/saml2/idpresponse`. *user-pool-domain*을 Amazon Cognito 사용자 풀의 도메인 이름으로 바꿉니다.

     ```
     <saml2p:Response 
       Destination="https://user-pool-domain/saml2/idpresponse"
       ID="id123" 
       InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" 
       IssueInstant="Date-time stamp" 
       Version="2.0" 
       xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" 
       xmlns:xs="http://www.w3.org/2001/XMLSchema">
     ```
   + **SubjectConfirmationData** - 사용자 풀 `saml2/idpresponse` 엔드포인트와 원래 SAML 요청 ID`InResponseTo`로 `Recipient` 설정합니다.

     ```
     <saml2:SubjectConfirmationData 
       InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" 
       NotOnOrAfter="Date-time stamp" 
       Recipient="https://user-pool-domain/saml2/idpresponse"/>
     ```
   + **AuthnStatement** -를 다음과 같이 구성합니다.

     ```
     <saml2:AuthnStatement AuthnInstant="2016-10-30T13:13:28.152TZ"
       SessionIndex="32413b2e54db89c764fb96ya2k" SessionNotOnOrAfter="2016-10-30T13:13:28">
         <saml2:SubjectLocality />
         <saml2:AuthnContext>
             <saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml2:AuthnContextClassRef>
         </saml2:AuthnContext>
     </saml2:AuthnStatement>
     ```

1. SAML 애플리케이션에 로그아웃 URL 필드가 있는 경우 로 설정합니다`<domain-url>/saml2/logout`.

**도메인 URL을 가져오려면**

   1. **관리자** 또는 **clusteradmin**으로 RES에 로그인합니다.

   1. **환경 관리** " **일반 설정** " **자격 증명 공급자**로 이동합니다.

   1. **도메인 URL**을 선택합니다.

1. IdP가 Amazon Cognito와의 신뢰를 구축하기 위해 서명 인증서를 수락하는 경우 Amazon Cognito 서명 인증서를 다운로드하여 IdP에 업로드합니다.

**서명 인증서를 가져오는 방법**

   1. [Amazon Cognito 콘솔](https://console.aws.amazon.com/cognito/v2/idp/user-pools/)을 엽니다.

   1. 사용자 풀을 선택합니다. 사용자 풀은 여야 합니다`res-<environment name>-user-pool`.

   1. **로그인 환경** 탭을 선택합니다.

   1. **페더레이션 자격 증명 공급자 로그인** 섹션에서 **서명 인증서 보기를** 선택합니다.  
![\[선택한 사용자 풀에 대한 페더레이션 자격 증명 공급자 로그인 섹션의 서명 인증서 보기 버튼이 있는 Amazon Cognito 콘솔입니다.\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/cognito-user-pool-signing-cert.png)

      이 인증서를 사용하여 Active Directory IDP를 설정하고,를 추가하고`relying party trust`,이 신뢰 당사자에 대한 SAML 지원을 활성화할 수 있습니다.
**참고**  
이는 Keycloak 및 IDC에는 적용되지 않습니다.

   1. 애플리케이션 설정이 완료되면 SAML 2.0 애플리케이션 메타데이터 XML 또는 URL을 다운로드합니다. 다음 단원에서 사용합니다.

## 자격 증명 공급자를 사용하도록 RES 구성
<a name="configure-id-federation_config-res"></a>

**RES에 대한 Single Sign-On 설정을 완료하려면**

1. **관리자** 또는 **clusteradmin**으로 RES에 로그인합니다.

1. **환경 관리** " **일반 설정** " **자격 증명 공급자**로 이동합니다.  
![\[Single Sign-On 섹션을 포함한 RES의 환경 설정 사용자 인터페이스입니다.\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/environment-settings.png)

1. **Single Sign-On**에서 상태 표시기 옆의 편집 아이콘을 선택하여 **Single Sign-On 구성** 페이지를 엽니다.  
![\[RES의 Single Sign On 구성 사용자 인터페이스입니다.\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/sso-config.png)

   1. **자격 증명 공급자**에서 **SAML**을 선택합니다.

   1. **공급자 이름**에 자격 증명 공급자의 고유한 이름을 입력합니다.
**참고**  
다음 이름은 허용되지 않습니다.  
Cognito
IdentityCenter

   1. **메타데이터 문서 소스**에서 적절한 옵션을 선택하고 메타데이터 XML 문서를 업로드하거나 자격 증명 공급자의 URL을 제공합니다.

   1. **공급자 이메일 속성**에 텍스트 값를 입력합니다`email`.

   1. **제출**을 선택합니다.

1. **환경 설정** 페이지를 다시 로드합니다. 구성이 올바르면 Single Sign-On이 활성화됩니다.

## 비프로덕션 환경에서 ID 제공업체 구성
<a name="configure-id-federation-demo-env"></a>

제공된 [외부 리소스를](prerequisites.md#external-resources) 사용하여 비프로덕션 RES 환경을 생성하고 IAM Identity Center를 자격 증명 공급자로 구성한 경우 Okta와 같은 다른 자격 증명 공급자를 구성할 수 있습니다. RES SSO 활성화 양식은 세 가지 구성 파라미터를 요청합니다.

1. 공급자 이름 - 수정할 수 없음

1. 메타데이터 문서 또는 URL - 수정할 수 있음

1. 공급자 이메일 속성 - 수정할 수 있음

**메타데이터 문서 및 공급자 이메일 속성을 수정하려면 다음을 수행합니다.**

1.  Amazon Cognito 콘솔로 이동합니다.

1. 탐색에서 **사용자 풀을** 선택합니다.

1. 사용자 풀을 선택하여 **사용자 풀 개요를** 봅니다.

1. **로그인 환경** 탭에서 **페더레이션 자격 증명 공급자 로그인**으로 이동하여 구성된 자격 증명 공급자를 엽니다.

1. 일반적으로 메타데이터를 변경하고 속성 매핑을 변경하지 않고 그대로 두면 됩니다. **속성 매핑을** 업데이트하려면 **편집**을 선택합니다. **메타데이터 문서를** 업데이트하려면 **메타데이터 교체**를 선택합니다.  
![\[Amazon CognitoUser 풀 개요.\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/res-attributemetadata.png)

1. 속성 매핑을 편집한 경우 DynamoDB에서 `<environment name>.cluster-settings` 테이블을 업데이트해야 합니다.

   1. DynamoDB 콘솔을 열고 탐색에서 **테이블**을 선택합니다.

   1. `<environment name>.cluster-settings` 테이블을 찾아 선택하고 **작업** 메뉴에서 **항목 탐색**을 선택합니다.

   1. **항목 스캔 또는 쿼리**에서 **필터**로 이동하여 다음 파라미터를 입력합니다.
      + **속성 이름** - `key`
      + **값** - `identity-provider.cognito.sso_idp_provider_email_attribute`

   1. **실행**을 선택합니다.

1. **반환된 항목**에서 `identity-provider.cognito.sso_idp_provider_email_attribute` 문자열을 찾고 **편집**을 선택하여 Amazon Cognito의 변경 사항과 일치하도록 문자열을 수정합니다.  
![\[Amazon CognitoDDynamoDB에서 반환된 필터 및 항목을 업데이트합니다.\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/res-scanqueryitems.png)

## SAML IdP 문제 디버깅
<a name="configure-id-federation_debug"></a>

**SAML 추적기 -** Chrome 브라우저에이 확장을 사용하여 SAML 요청을 추적하고 SAML 어설션 값을 확인할 수 있습니다. 자세한 내용은 Chrome 웹 스토어의 [ SAML-tracer](https://chromewebstore.google.com/detail/saml-tracer/mpdajninpobndbfcldcmbpnnbhibjmch?pli=1)를 참조하세요.

**SAML 개발자 도구** - OneLogin은 SAML 인코딩된 값을 디코딩하고 SAML 어설션의 필수 필드를 확인하는 데 사용할 수 있는 도구를 제공합니다. 자세한 내용은 OneLogin 웹 사이트의 [Base 64 Decode \$1 Inflate](https://www.samltool.com/decode.php)를 참조하세요.

**Amazon CloudWatch Logs** - CloudWatch Logs에서 RES 로그의 오류 또는 경고를 확인할 수 있습니다. 로그는 이름 형식의 로그 그룹에 있습니다`/res-environment-name/cluster-manager`.

**Amazon Cognito 설명서** - Amazon Cognito와의 SAML 통합에 대한 자세한 내용은 Amazon *Amazon Cognito 개발자 안내서*의 [사용자 풀에 SAML 자격 증명 공급자 추가](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-saml-idp.html)를 참조하세요.

# 사용자의 암호 설정
<a name="setting-user-passwords"></a>

1. [Directory Service 콘솔](https://console.aws.amazon.com/directoryservicev2/)에서 생성된 스택의 디렉터리를 선택합니다.

1. **작업** 메뉴에서 **사용자 암호 재설정**을 선택합니다.

1. 사용자를 선택하고 새 암호를 입력합니다.

1. **암호 재설정**을 선택합니다.

# 하위 도메인 생성
<a name="create-subdomains"></a>

사용자 지정 도메인을 사용하는 경우 포털의 웹 및 VDI 부분을 지원하도록 하위 도메인을 설정해야 합니다.

**참고**  
GovCloud 리전에 배포하는 경우 도메인 퍼블릭 호스팅 영역을 호스팅하는 상용 파티션 계정에서 웹 애플리케이션 및 VDI 하위 도메인을 설정합니다.

1. [Route 53 콘솔](https://console.aws.amazon.com/route53/)을 엽니다.

1. 생성한 도메인을 찾아 **레코드 생성을** 선택합니다.

1. **레코드 이름으로** '웹'을 입력합니다.

1. **레코드 유형**으로 **CNAME**을 선택합니다.

1. **값에** 초기 이메일에서 받은 링크를 입력합니다.

1. **레코드 생성**을 선택합니다.

1. "에 대한 레코드를 생성하려면 NLB 주소를 검색합니다.

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

   1. `<environment-name>-vdc`을 선택합니다.

   1. **리소스를** 선택하고를 엽니다`<environmentname>-vdc-external-nlb`.

   1. NLB에서 DNS 이름을 복사합니다.

1. [Route 53 콘솔](https://console.aws.amazon.com/route53/)을 엽니다.

1. 도메인을 찾아 **레코드 생성을** 선택합니다.

1. **레코드 이름**에를 입력합니다`vdc`.

1. **레코드 유형(Record type)**에서 **CNAME**을 선택합니다.

1. NLB에 DNS를 입력합니다.

1. **레코드 세트 생성**을 선택합니다.

# ACM 인증서 생성
<a name="acm-certificate"></a>

기본적으로 RES는 도메인 amazonaws.com 사용하여 애플리케이션 로드 밸런서에서 웹 포털을 호스팅합니다. 자체 도메인을 사용하려면 사용자가 제공하거나 AWS Certificate Manager (ACM)에서 요청한 퍼블릭 SSL/TLS 인증서를 구성해야 합니다. ACM을 사용하는 경우 클라이언트와 웹 서비스 호스트 간에 SSL/TLS 채널을 암호화하기 위해 파라미터로 제공해야 하는 AWS 리소스 이름을 받게 됩니다.

**작은 정보**  
외부 리소스 데모 패키지를 배포하는 경우에서 외부 리소스 스택을 배포할 `PortalDomainName` 때 선택한 도메인을에 입력해야 합니다[외부 리소스 생성](create-external-resources.md).

**사용자 지정 도메인에 대한 인증서를 생성하려면:**

1. 콘솔에서 [AWS Certificate Manager](https://console.aws.amazon.com/acm/home#/certificates/request)를 열어 퍼블릭 인증서를 요청합니다. GovCloud 리전에 배포하는 경우 GovCloud 파티션 계정에 인증서를 생성합니다.

1. **퍼블릭 인증서 요청을** 선택하고 **다음을** 선택합니다.

1. **도메인 이름**에서 `*.PortalDomainName` 및 모두에 대한 인증서를 요청합니다`PortalDomainName`.

1. **검증 방법**에서 **DNS 검증**을 선택합니다.

1. **요청**을 선택합니다.

1. **인증서** 목록에서 요청된 인증서를 엽니다. 각 인증서는 **검증 보류** 중 상태를 갖습니다.
**참고**  
인증서가 표시되지 않으면 목록을 새로 고칩니다.

1. 다음 중 하나를 수행하세요.
   + **상용 배포:**

     요청된 각 **인증서의 인증서 세부 정보**에서 **Route 53에서 레코드 생성을** 선택합니다. 인증서 상태가 **발급됨**으로 변경되어야 합니다.
   + **GovCloud 배포:**

     GovCloud 리전에 배포하는 경우 CNAME 키와 값을 복사합니다. 상용 파티션 계정에서 값을 사용하여 퍼블릭 호스팅 영역에 새 레코드를 생성합니다. 인증서 상태가 **발급됨**으로 변경되어야 합니다.

1. 새 인증서 ARN을 복사하여의 파라미터로 입력합니다`ACMCertificateARNforWebApp`.

# Amazon CloudWatch Logs
<a name="log-groups"></a>

Research and Engineering Studio는 설치 중에 CloudWatch에 다음과 같은 로그 그룹을 생성합니다. 기본 보존 기간은 다음 표를 참조하세요.


| CloudWatch Log 그룹 | Retention | 
| --- | --- | 
| /aws/lambda/<installation-stack-name>-cluster-endpoints | 만료되지 않음 | 
| /aws/lambda/<installation-stack-name>-cluster-manager-scheduled-ad-sync | 만료되지 않음 | 
| /aws/lambda/<installation-stack-name>-cluster-settings | 만료되지 않음 | 
| /aws/lambda/<installation-stack-name>-oauth-credentials | 만료되지 않음 | 
| /aws/lambda/<installation-stack-name>-self-signed-certificate | 만료되지 않음 | 
| /aws/lambda/<installation-stack-name>-update-cluster-prefix-list | 만료되지 않음 | 
| /aws/lambda/<installation-stack-name>-vdc-scheduled-event-transformer | 만료되지 않음 | 
| /aws/lambda/<installation-stack-name>-vdc-update-cluster-manager-client-scope | 만료되지 않음 | 
| /<installation-stack-name>/cluster-manager | 3개월 | 
| /<installation-stack-name>/vdc/controller | 3개월 | 
| /<installation-stack-name>/vdc/dcv-broker | 3개월 | 
| /<installation-stack-name>/vdc/dcv-connection-gateway | 3개월 | 

로그 그룹의 기본 보존을 변경하려면 [CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch)로 이동하여 [ CloudWatch Logs의 로그 데이터 보존 변경](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#SettingLogRetention) 지침을 따르세요.

# 사용자 지정 권한 경계 설정
<a name="permission-boundaries"></a>

 2024년 4월부터 사용자 지정 권한 경계를 연결하여 RES에서 생성한 역할을 선택적으로 수정할 수 있습니다. 사용자 지정 권한 경계는 IAMPermissionBoundary 파라미터의 일부로 권한 경계의 ARN을 제공하여 RES CloudFormation 설치의 일부로 정의할 수 있습니다. 이 파라미터를 비워 두면 RES 역할에 권한 경계가 설정되지 않습니다. 다음은 RES 역할이 작동하는 데 필요한 작업 목록입니다. 사용하려는 권한 경계가 다음 작업을 명시적으로 허용하는지 확인합니다.

```
[
    {
        "Effect": "Allow",
        "Resource": "*",
        "Sid": "ResRequiredActions",
        "Action": [
            "access-analyzer:*",
            "account:GetAccountInformation",
            "account:ListRegions",
            "acm:*",
            "airflow:*",
            "amplify:*",
            "amplifybackend:*",
            "amplifyuibuilder:*",
            "aoss:*",
            "apigateway:*",
            "appflow:*",
            "application-autoscaling:*",
            "appmesh:*",
            "apprunner:*",
            "aps:*",
            "athena:*",
            "auditmanager:*",
            "autoscaling-plans:*",
            "autoscaling:*",
            "backup-gateway:*",
            "backup-storage:*",
            "backup:*",
            "batch:*",
            "bedrock:*",
            "budgets:*",
            "ce:*",
            "cloud9:*",
            "cloudformation:*",
            "cloudfront:*",
            "cloudtrail-data:*",
            "cloudtrail:*",
            "cloudwatch:*",
            "codeartifact:*",
            "codebuild:*",
            "codeguru-profiler:*",
            "codeguru-reviewer:*",
            "codepipeline:*",
            "codestar-connections:*",
            "codestar-notifications:*",
            "codestar:*",
            "cognito-identity:*",
            "cognito-idp:*",
            "cognito-sync:*",
            "comprehend:*",
            "compute-optimizer:*",
            "cur:*",
            "databrew:*",
            "datapipeline:*",
            "datasync:*",
            "dax:*",
            "detective:*",
            "devops-guru:*",
            "dlm:*",
            "dms:*",
            "drs:*",
            "dynamodb:*",
            "ebs:*",
            "ec2-instance-connect:*",
            "ec2:*",
            "ec2messages:*",
            "ecr:*",
            "ecs:*",
            "eks:*",
            "elastic-inference:*",
            "elasticache:*",
            "elasticbeanstalk:*",
            "elasticfilesystem:*",
            "elasticloadbalancing:*",
            "elasticmapreduce:*",
            "elastictranscoder:*",
            "es:*",
            "events:*",
            "firehose:*",
            "fis:*",
            "fms:*",
            "forecast:*",
            "fsx:*",
            "geo:*",
            "glacier:*",
            "glue:*",
            "grafana:*",
            "guardduty:*",
            "health:*",
            "iam:*",
            "identitystore:*",
            "imagebuilder:*",
            "inspector2:*",
            "inspector:*",
            "internetmonitor:*",
            "iot:*",
            "iotanalytics:*",
            "kafka:*",
            "kafkaconnect:*",
            "kinesis:*",
            "kinesisanalytics:*",
            "kms:*",
            "lambda:*",
            "lightsail:*",
            "logs:*",
            "memorydb:*",
            "mgh:*",
            "mobiletargeting:*",
            "mq:*",
            "neptune-db:*",
            "organizations:DescribeOrganization",
            "osis:*",
            "personalize:*",
            "pi:*",
            "pipes:*",
            "polly:*",
            "quicksight:*",
            "rds-data:*",
            "rds:*",
            "redshift-data:*",
            "redshift-serverless:*",
            "redshift:*",
            "rekognition:*",
            "resiliencehub:*",
            "resource-groups:*",
            "route53:*",
            "route53domains:*",
            "route53resolver:*",
            "rum:*",
            "s3:*",
            "sagemaker:*",
            "scheduler:*",
            "schemas:*",
            "sdb:*",
            "secretsmanager:*",
            "securityhub:*",
            "serverlessrepo:*",
            "servicecatalog:*",
            "servicequotas:*",
            "ses:*",
            "signer:*",
            "sns:*",
            "sqs:*",
            "ssm:*",
            "ssmmessages:*",
            "states:*",
            "storagegateway:*",
            "sts:*",
            "support:*",
            "tag:GetResources",
            "tag:GetTagKeys",
            "tag:GetTagValues",
            "textract:*",
            "timestream:*",
            "transcribe:*",
            "transfer:*",
            "translate:*",
            "vpc-lattice:*",
            "waf-regional:*",
            "waf:*",
            "wafv2:*",
            "wellarchitected:*",
            "wisdom:*",
            "xray:*"
        ]
    }
]
```

# RES 지원 AMIs 구성
<a name="res-ready-ami"></a>

RES 지원 Amazon Machine Image(AMIs를 사용하면 사용자 지정 AMIs에 가상 데스크톱 인스턴스(VDIs)에 대한 RES 종속성을 사전 설치할 수 있습니다. RES 지원 AMIs 사용하면 미리 베이킹된 이미지를 사용하는 VDI 인스턴스의 부팅 시간이 단축됩니다. EC2 Image Builder를 사용하여 AMIs 빌드하고 새 소프트웨어 스택으로 등록할 수 있습니다. Image Builder에 대한 자세한 내용은 [ Image Builder 사용 설명서를](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html) 참조하세요.

시작하기 전에 [최신 버전의 RES를 배포](update-the-product.md)해야 합니다.

**중요**  
RES 2025.06.01 이전에 생성된 RES 지원 AMIs는 RES 2025.06.01 및 모든 후속 버전과 호환되지 않습니다. RES 환경을 2025.06.01 이전 버전에서 최신 버전으로 업그레이드할 때는 모든 RES 지원 AMIs를 다시 빌드해야 합니다.

**Topics**
+ [RES 환경에 액세스하기 위한 IAM 역할 준비](#prepare-role)
+ [EC2 Image Builder 구성 요소 생성](#image-builder-component)
+ [EC2 Image Builder 레시피 준비](#prepare-recipe)
+ [EC2 Image Builder 인프라 구성](#configure-ib-infrastructure)
+ [Image Builder 이미지 파이프라인 구성](#image-builder-pipeline)
+ [Image Builder 이미지 파이프라인 실행](#run-image-pipeline)
+ [RES에 새 소프트웨어 스택 등록](#register-res-ready-stack)

## RES 환경에 액세스하기 위한 IAM 역할 준비
<a name="prepare-role"></a>

EC2 Image Builder에서 RES 환경 서비스에 액세스하려면 RES-EC2InstanceProfileForImageBuilder라는 IAM 역할을 생성하거나 수정해야 합니다. Image Builder에서 사용할 IAM 역할을 구성하는 방법에 대한 자세한 내용은 *Image Builder 사용 설명서*의 [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-builder-setting-up.html#image-builder-IAM-prereq)을 참조하세요.

**역할에는 다음이 필요합니다.**
+ Amazon EC2 서비스를 포함하는 신뢰할 수 있는 관계입니다.
+ AmazonS3ReadOnlyAccess, AmazonSSMManagedInstanceCore 및 EC2InstanceProfileForImageBuilder 정책.

## EC2 Image Builder 구성 요소 생성
<a name="image-builder-component"></a>

[Image Builder 사용 설명서의 Image Builder 콘솔을 사용하여 구성 요소 생성](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-component-console.html) 지침을 따릅니다. ** 

**구성 요소 세부 정보를 입력합니다.**

1. **유형**에서 **빌드**를 선택합니다.

1. **이미지 운영 체제(OS)**에서 Linux 또는 Windows를 선택합니다.

1. **구성 요소 이름**에와 같은 의미 있는 이름을 입력합니다**research-and-engineering-studio-vdi-<operating-system>**.

1. 구성 요소의 버전 번호를 입력하고 선택적으로 설명을 추가합니다.

   ```
   key : value 
   ```

1. **정의 문서에** 다음 정의 파일을 입력합니다. 오류가 발생하면 YAML 파일은 공간에 민감하며 가장 가능성이 높은 원인입니다.
**중요**  
RES 환경 버전이 최신 버전이 아닌 경우 정의 파일**latest**에서 다운로드 URI(`- source: 's3://research-engineering-studio-us-east-1/releases/latest/res-installation-scripts.tar.gz'`)의를 정확한 버전 번호(예: **2025.06**)로 바꿉니다.

------
#### [ Linux ]

   ```
   #  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #
   #  Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
   #  with the License. A copy of the License is located at
   #
   #      http://www.apache.org/licenses/LICENSE-2.0
   #
   #  or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
   #  OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
   #  and limitations under the License.
   name: research-and-engineering-studio-vdi-linux
   description: An RES EC2 Image Builder component to install required RES software dependencies for Linux VDI.
   schemaVersion: 1.0
   parameters:
     - GPUFamily:
         type: string
         description: GPU family (NONE, NVIDIA, or AMD)
         default: NONE
   phases:
     - name: build
       steps:
         - name: PrepareRESBootstrap
           action: ExecuteBash
           onFailure: Abort
           maxAttempts: 3
           inputs:
             commands:
               - "mkdir -p /root/bootstrap/logs"
               - "mkdir -p /root/bootstrap/latest"
         - name: DownloadRESLinuxInstallPackage
           action: S3Download
           onFailure: Abort
           maxAttempts: 3
           inputs:
             - source: "s3://research-engineering-studio-us-east-1/releases/latest/res-installation-scripts.tar.gz"
               destination: "/root/bootstrap/res-installation-scripts/res-installation-scripts.tar.gz"
         - name: RunInstallScript
           action: ExecuteBash
           onFailure: Abort
           maxAttempts: 3
           inputs:
             commands:
               - "cd /root/bootstrap/res-installation-scripts"
               - "tar -xf res-installation-scripts.tar.gz"
               - "cd scripts/virtual-desktop-host/linux"
               - "/bin/bash install.sh -g {{ GPUFamily }}"
         - name: RebootAfterInstall
           action: Reboot
           onFailure: Abort
           maxAttempts: 3
           inputs:
               delaySeconds: 0
         - name: RunInstallPostRebootScript
           action: ExecuteBash
           onFailure: Abort
           maxAttempts: 3
           inputs:
             commands:
               - "cd /root/bootstrap/res-installation-scripts/scripts/virtual-desktop-host/linux"
               - 'sed -i ''/^export AWS_DEFAULT_PROFILE="bootstrap_profile"$/d'' install_post_reboot.sh'
               - "/bin/bash install_post_reboot.sh -g {{ GPUFamily }}"
         - name: PreventAL2023FromUninstallingCronie
           action: ExecuteBash
           onFailure: Abort
           maxAttempts: 3
           inputs:
             commands:
               - "rm -f /tmp/imagebuilder_service/crontab_installed"
   ```

------
#### [ Windows ]

   ```
   #  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #
   #  Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
   #  with the License. A copy of the License is located at
   #
   #      http://www.apache.org/licenses/LICENSE-2.0
   #
   #  or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
   #  OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
   #  and limitations under the License.
   name: research-and-engineering-studio-vdi-windows
   description: An RES EC2 Image Builder component to install required RES software dependencies for Windows VDI.
   schemaVersion: 1.0
   
   phases:
     - name: build
       steps:
          - name: CreateRESBootstrapFolder
            action: CreateFolder
            onFailure: Abort
            maxAttempts: 3
            inputs:
               - path: 'C:\Users\Administrator\RES\Bootstrap'
                 overwrite: true
          - name: DownloadRESWindowsInstallPackage
            action: S3Download
            onFailure: Abort
            maxAttempts: 3
            inputs:
               - source: 's3://research-engineering-studio-us-east-1/releases/latest/res-installation-scripts.tar.gz'
                 destination: '{{ build.CreateRESBootstrapFolder.inputs[0].path }}\res-installation-scripts.tar.gz'
          - name: RunInstallScript
            action: ExecutePowerShell
            onFailure: Abort
            maxAttempts: 3
            inputs:
               commands:
                   - 'cd {{ build.CreateRESBootstrapFolder.inputs[0].path }}'
                   - 'tar -xf res-installation-scripts.tar.gz'
                   - 'Import-Module .\scripts\virtual-desktop-host\windows\Install.ps1'
                   - 'Install-WindowsEC2Instance -PrebakeAMI'
   ```

------

1. 선택적 태그를 생성하고 **구성 요소 생성을** 선택합니다.

## EC2 Image Builder 레시피 준비
<a name="prepare-recipe"></a>

EC2 Image Builder 레시피는 새 이미지를 생성하기 위한 출발점으로 사용할 기본 이미지를 정의합니다. 새 이미지를 정의하는 동시에 이미지를 사용자 정의하고 모든 것이 예상대로 작동하는지 확인하기 위해 사용자가 추가하는 구성 요소 집합도 정의합니다. 레시피를 생성하거나 수정하여 필요한 RES 소프트웨어 종속성을 가진 대상 AMI를 구성해야 합니다. 레시피에 대한 자세한 내용은 [레시피 관리를 참조하세요](https://docs.aws.amazon.com/imagebuilder/latest/userguide/manage-recipes.html).

RES는 다음 이미지 운영 체제를 지원합니다.
+ Amazon Linux 2(x86 및 ARM64)
+ Amazon Linux 2023(x86 및 ARM64) 
+ RHEL 8(x86) 및 9(x86)
+ Rocky Linux 9(x86)
+ Ubuntu 22.04.3(x86)
+ Ubuntu 24.04.3(x86)
+ Windows Server 2019, 2022(x86)
+ Windows 10, 11(x86)

**참고**  
릴리스 2026.03부터 Amazon Linux 2 및 RHEL 8은 더 이상 기본 소프트웨어 스택으로 포함되지 않습니다. 필요한 경우 이러한 운영 체제가 있는 사용자 지정 소프트웨어 스택을 계속 등록할 수 있습니다.

------
#### [ Create a new recipe ]

1. 에서 EC2 Image Builder 콘솔을 엽니다[https://console.aws.amazon.com/imagebuilder](https://console.aws.amazon.com/imagebuilder).

1. **저장된 리소스**에서 **이미지 레시피를** 선택합니다.

1. **이미지 레시피 생성**을 선택합니다.

1. 고유한 이름과 버전 번호를 입력합니다.

1. RES에서 지원하는 기본 이미지를 선택합니다.

1. **인스턴스 구성**에서 사전 설치되지 않은 SSM 에이전트를 설치합니다. **사용자 데이터** 및 기타 필요한 사용자 데이터에 정보를 입력합니다.
**참고**  
SSM 에이전트를 설치하는 방법에 대한 자세한 내용은 다음을 참조하세요.  
[ Linux용 EC2 인스턴스에 SSM 에이전트를 수동으로 설치합니다](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html).
[ Windows Server용 EC2 인스턴스에 SSM Agent를 수동으로 설치 및 제거합니다](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-win.html).

1. Linux 기반 레시피의 경우 Amazon 관리형 `aws-cli-version-2-linux` 빌드 구성 요소를 레시피에 추가합니다. Windows 기반 레시피의 경우 Amazon 관리형 `aws-cli-version-2-windows` 빌드 구성 요소를 레시피에 추가합니다. RES 설치 스크립트는 AWS CLI 를 사용하여 DynamoDB 클러스터 설정의 구성 값에 대한 VDI 액세스를 제공합니다.

1. Linux 또는 Windows 환경을 위해 생성된 EC2 Image Builder 구성 요소를 추가합니다.
**중요**  
`aws-cli-version-2-linux` (Linux의 경우) 또는 ` aws-cli-version-2-windows` (Windows의 경우) 빌드 구성 요소가 먼저 추가된 순서대로 이러한 구성 요소를 추가해야 합니다.  

![\[추가된 빌드 구성 요소를 보여주는 구성 요소 페이지\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/res-ami-build-components.png)


1. (권장) Amazon 관리형 `simple-boot-test-<linux-or-windows>` 테스트 구성 요소를 추가하여 AMI를 시작할 수 있는지 확인합니다. 이는 최소 권장 사항입니다. 요구 사항에 맞는 다른 테스트 구성 요소를 선택할 수 있습니다.

1. 필요한 경우 선택적 섹션을 작성하고 원하는 다른 구성 요소를 추가한 다음 **레시피 생성을** 선택합니다.

------
#### [ Modify a recipe ]

기존 EC2 Image Builder 레시피가 있는 경우 다음 구성 요소를 추가하여 사용할 수 있습니다.

1. Linux 기반 레시피의 경우 Amazon 관리형 `aws-cli-version-2-linux` 빌드 구성 요소를 레시피에 추가합니다. Windows 기반 레시피의 경우 Amazon 관리형 `aws-cli-version-2-windows` 빌드 구성 요소를 레시피에 추가합니다. RES 설치 스크립트는 AWS CLI 를 사용하여 DynamoDB 클러스터 설정의 구성 값에 대한 VDI 액세스를 제공합니다.

1. Linux 또는 Windows 환경을 위해 생성된 EC2 Image Builder 구성 요소를 추가합니다.
**중요**  
`aws-cli-version-2-linux` (Linux의 경우) 또는 ` aws-cli-version-2-windows` (Windows의 경우) 빌드 구성 요소가 먼저 추가된 순서대로 이러한 구성 요소를 추가해야 합니다.  

![\[추가된 빌드 구성 요소를 보여주는 구성 요소 페이지\]](http://docs.aws.amazon.com/ko_kr/res/latest/ug/images/res-ami-build-components.png)


1. 필요한 경우 선택적 섹션을 작성하고 원하는 다른 구성 요소를 추가한 다음 **레시피 생성을** 선택합니다.

------

## EC2 Image Builder 인프라 구성
<a name="configure-ib-infrastructure"></a>

인프라 구성을 사용하여 Image Builder가 Image Builder 이미지를 빌드하고 테스트하는 데 사용하는 Amazon EC2 인프라를 지정할 수 있습니다. RES와 함께 사용하려면 새 인프라 구성을 생성하거나 기존 인프라 구성을 사용하도록 선택할 수 있습니다.
+ 새 인프라 구성을 생성하려면 [인프라 구성 생성을 참조하세요](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-infra-config.html).
+ 기존 인프라 구성을 사용하려면 [인프라 구성을 업데이트합니다](https://docs.aws.amazon.com/imagebuilder/latest/userguide/update-infra-config.html).

**Image Builder 인프라를 구성하려면:**

1. **IAM 역할에**에서 이전에 구성한 역할을 입력합니다[RES 환경에 액세스하기 위한 IAM 역할 준비](#prepare-role).

1. **인스턴스 유형**에서 메모리가 4GB 이상인 유형을 선택하고 선택한 기본 AMI 아키텍처를 지원합니다. [Amazon EC2 인스턴스 유형을 참조하세요](https://aws.amazon.com/ec2/instance-types/).

1. **VPC, 서브넷 및 보안 그룹의** 경우 소프트웨어 패키지를 다운로드하려면 인터넷 액세스를 허용해야 합니다. 또한 RES 환경의 `cluster-settings` DynamoDB 테이블 및 Amazon S3 클러스터 버킷에 대한 액세스가 허용되어야 합니다.

## Image Builder 이미지 파이프라인 구성
<a name="image-builder-pipeline"></a>

Image Builder 이미지 파이프라인은 기본 이미지, 빌드 및 테스트를 위한 구성 요소, 인프라 구성 및 배포 설정을 수집합니다. RES 지원 AMIs에 대한 이미지 파이프라인을 구성하려면 새 파이프라인을 생성하거나 기존 파이프라인을 사용하도록 선택할 수 있습니다. 자세한 내용은 *Image Builder 사용 설명서*의 [AMI 이미지 파이프라인 생성 및 업데이트를 참조하세요](https://docs.aws.amazon.com/imagebuilder/latest/userguide/ami-image-pipelines.html).

------
#### [ Create a new Image Builder pipeline ]

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

1. 탐색 창에서 **이미지 파이프라인을** 선택합니다.

1. **이미지 파이프라인 생성을** 선택합니다.

1. 고유한 이름, 선택적 설명, 일정 및 빈도를 입력하여 파이프라인 세부 정보를 지정합니다.

1. **레시피 선택**에서 **기존 레시피 사용을** 선택하고에서 생성된 레시피를 선택합니다[EC2 Image Builder 레시피 준비](#prepare-recipe). 레시피 세부 정보가 올바른지 확인합니다.

1. **이미지 생성 프로세스 정의**에서 사용 사례에 따라 기본 또는 사용자 지정 워크플로를 선택합니다. 대부분의 경우 기본 워크플로면 충분합니다. 자세한 내용은 [ EC2 Image Builder 파이프라인의 이미지 워크플로 구성을 참조하세요](https://docs.aws.amazon.com/imagebuilder/latest/userguide/pipeline-workflows.html).

1. **인프라 구성 정의**에서 **기존 인프라 구성 선택을** 선택하고에서 생성된 인프라 구성을 선택합니다[EC2 Image Builder 인프라 구성](#configure-ib-infrastructure). 인프라 세부 정보가 올바른지 확인합니다.

1. **배포 설정 정의**에서 **서비스 기본값을 사용하여 배포 설정 생성을** 선택합니다. 출력 이미지는 RES 환경 AWS 리전 과 동일한에 있어야 합니다. 서비스 기본값을 사용하면 Image Builder가 사용되는 리전에서 이미지가 생성됩니다.

1. 파이프라인 세부 정보를 검토하고 **파이프라인 생성을** 선택합니다.

------
#### [ Modify an existing Image Builder pipeline ]

1. 기존 파이프라인을 사용하려면에서 생성된 레시피를 사용하도록 세부 정보를 수정합니다[EC2 Image Builder 레시피 준비](#prepare-recipe).

1. **변경 사항 저장**을 선택합니다.

------

## Image Builder 이미지 파이프라인 실행
<a name="run-image-pipeline"></a>

구성된 출력 이미지를 생성하려면 이미지 파이프라인을 시작해야 합니다. 이미지 레시피의 구성 요소 수에 따라 빌드 프로세스에 최대 1시간이 걸릴 수 있습니다.

**이미지 파이프라인을 실행하려면:**

1. **이미지 파이프라인**에서에서 생성된 파이프라인을 선택합니다[Image Builder 이미지 파이프라인 구성](#image-builder-pipeline).

1. **작업**에서 **파이프라인 실행**을 선택합니다.

## RES에 새 소프트웨어 스택 등록
<a name="register-res-ready-stack"></a>

1. 의 지침에 따라 소프트웨어 스택을 등록[소프트웨어 스택(AMIs)](software-stacks.md)합니다.

1. **AMI ID**에에 내장된 출력 이미지의 AMI ID를 입력합니다[Image Builder 이미지 파이프라인 실행](#run-image-pipeline).

# 구성 가능한 DCV 세션 검증 임계값
<a name="dcv-session-validation-thresholds"></a>

VDI 세션이 재개되거나 시작되면 RES는 DCV 세션이 준비 상태에 도달했는지 반복적으로 확인합니다. 세션이 특정 재시도 횟수 내에 준비되지 않으면 ERROR로 표시됩니다.

이러한 재시도 임계값은 `<env-name>.cluster-settings` DynamoDB 테이블을 통해 구성할 수 있으므로 관리자가 환경에 따라 조정할 수 있습니다. 이는 사용자 지정 AMI 구성, 추가 소프트웨어 설치 또는 기타 VDI 설정 로직으로 인해 부트스트랩 시간이 긴 환경에 특히 유용합니다.


| Key(키) | 설명 | 기본값  | 
| --- | --- | --- | 
| vdc.validation\$1request\$1threshold | 준비되지 않은 세션을 ERROR로 표시하기 전에 최대 재시도 횟수 | 50 | 
| vdc.session\$1deleted\$1threshold | DELETED 세션을 ERROR로 표시하기 전에 최대 재시도 횟수 | 15 | 

# RES 설치 후 사용자 지정 도메인 설정
<a name="setup-custom-domain-after-install"></a>

**참고**  
*사전 조건*:이 단계를 수행하기 전에 Secrets Manager 보안 암호에 인증서 및 PrivateKey 콘텐츠를 저장해야 합니다.

**웹 클라이언트에 인증서 추가**

1. 외부 DB 로드 밸런서의 리스너에 연결된 인증서를 업데이트합니다.

   1.  AWS 콘솔의 **EC2** > 로드 밸**런싱 > 로드** 밸런서에서 RES 외부 **로드 밸런서**로 이동합니다.

   1. 명명 규칙를 따르는 로드 밸런서를 검색합니다`<env-name>-external-alb`.

   1. 로드 밸런서에 연결된 리스너를 확인합니다.

   1. 기본 SSL/TLS 인증서가 새 인증서 세부 정보와 연결된 리스너를 업데이트합니다.

   1. 변경 내용을 저장합니다.

1. 클러스터 설정 테이블에서: 

   1. DynamoDB -> 테이블 ->에서 클러스터 설정 테이블을 찾습니다`<env-name>.cluster-settings`.

   1. **항목 탐색** 및 **속성별 필터링** - 이름 "key", 유형 "string", 조건 "contains", 값 "external\$1alb"로 이동합니다.

   1. True`cluster.load_balancers.external_alb.certificates.provided`로 설정합니다.

   1. 값을 업데이트합니다`cluster.load_balancers.external_alb.certificates.custom_dns_name`. 웹 사용자 인터페이스의 사용자 지정 도메인 이름입니다.

   1. 값을 업데이트합니다`cluster.load_balancers.external_alb.certificates.acm_certificate_arn`. Amazon Certificate Manager(ACM)에 저장된 해당 인증서의 Amazon 리소스 이름(ARN)입니다.

1. 외부 alb 로드 밸런서의 DNS 이름을 가리키도록 웹 클라이언트에 대해 생성한 해당 Route53 하위 도메인 레코드를 업데이트합니다`<env-name>-external-alb`.

1. SSO가 환경에 이미 구성되어 있는 경우 RES 웹 포털의 **환경 관리** > **자격 증명 관리** > **Single Sign-On** > **상태** > **편집** 버튼에서 처음 사용한 것과 동일한 입력으로 SSO를 다시 구성합니다.

**VDIs에 인증서 추가 또는 인증서 교체**

1. 보안 암호에 다음 태그를 추가하여 보안 암호에 GetSecret 작업을 수행할 수 있는 권한을 RES 애플리케이션에 부여합니다.
   + `res:EnvironmentName` : `<env-name>`
   + `res:ModuleName` : `virtual-desktop-controller`

1. 클러스터 설정 테이블에서: 

   1. DynamoDB -> 테이블 ->에서 클러스터 설정 테이블을 찾습니다`<env-name>.cluster-settings`.

   1. **항목 탐색** 및 **속성별 필터링** - 이름 "key", 유형 "string", 조건 "contains", 값 "dcv\$1connection\$1gateway"로 이동합니다.

   1. True`vdc.dcv_connection_gateway.certificate.provided`로 설정합니다.

   1. 값을 업데이트합니다`vdc.dcv_connection_gateway.certificate.custom_dns_name`. VDI 액세스를 위한 사용자 지정 도메인 이름입니다.

   1. 값을 업데이트합니다`vdc.dcv_connection_gateway.certificate.certificate_secret_arn`. 인증서 내용을 포함하는 보안 암호의 ARN입니다.

   1. 값을 업데이트합니다`vdc.dcv_connection_gateway.certificate.private_key_secret_arn`. 프라이빗 키 콘텐츠를 포함하는 보안 암호의 ARN입니다.

1. 게이트웨이 인스턴스에 사용되는 시작 템플릿을 업데이트합니다.

   1.  AWS 콘솔의 **EC2** > Auto Scaling > **Auto Scaling** 그룹에서 **Auto Scaling 그룹을** 엽니다.

   1. RES 환경에 해당하는 게이트웨이 Auto Scaling 그룹을 선택합니다. 이름은 명명 규칙을 따릅니다`<env-name>-vdc-gateway-asg`.

   1. 세부 정보 섹션에서 시작 템플릿을 찾아 엽니다.

   1. **세부 정보** > **작업** >에서 **템플릿 수정**(새 버전 생성)을 선택합니다.

   1. 아래로 스크롤하여 **고급 세부 정보로** 이동합니다.

   1. 맨 아래로 스크롤하여 **사용자 데이터**로 이동합니다.

   1. `CERTIFICATE_SECRET_ARN` 및 단어를 찾습니다`PRIVATE_KEY_SECRET_ARN`. 인증서(2.c단계 참조) 및 프라이빗 키(2.d단계 참조) 콘텐츠를 포함하는 보안 암호에 지정된 ARNs으로 이러한 값을 업데이트합니다.

   1. Auto Scaling 그룹이 최근에 생성된 시작 템플릿 버전을 사용하도록 구성되어 있는지 확인합니다(Auto Scaling 그룹 페이지에서).

1. 외부 nlb 로드 밸런서의 DNS 이름을 가리키도록 가상 데스크톱에 대해 생성한 해당 Route53 하위 도메인 레코드를 업데이트합니다`<env-name>-external-nlb`.

1. 기존 dcv-gateway 인스턴스를 종료`<env-name>-vdc-gateway`하고 새 인스턴스가 실행될 때까지 기다립니다. dcv-gateway 인스턴스는 매일 오전 12시(자정) UTC에 Secrets Manager에 저장된 인증서 및 프라이빗 키 값의 변경 사항을 확인하고 업데이트되면 새 값을 자동으로 검색하고 적용합니다.