

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

# 보안 구성 및 IAM 역할
<a name="dotnet-migrating-applications-security"></a>

**eb migrate** 명령은 IAM 역할, 인스턴스 프로파일 및 서비스 역할을 통해 AWS 보안 구성을 관리합니다. 이러한 구성 요소를 이해하면 마이그레이션 중에 적절한 액세스 제어 및 보안 규정 준수를 보장할 수 있습니다.

## 인스턴스 프로파일 구성
<a name="dotnet-migrating-applications-security-instance"></a>

인스턴스 프로파일은 Elastic Beanstalk가 환경의 EC2 인스턴스에 연결하는 IAM 역할의 컨테이너 역할을 합니다. **eb migrate**를 실행할 때 사용자 지정 인스턴스 프로파일을 지정할 수 있습니다.

```
PS C:\migrations_workspace> eb migrate --instance-profile "CustomInstanceProfile"
```

인스턴스 프로파일을 지정하지 않으면 **eb migrate**는 다음 권한이 있는 기본 프로파일을 생성합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-*",
                "arn:aws:s3:::elasticbeanstalk-*/*"
            ]
        }
    ]
}
```

------

## 서비스 역할 관리
<a name="dotnet-migrating-applications-security-service"></a>

서비스 역할을 사용하면 Elastic Beanstalk가 사용자를 대신하여 AWS 리소스를 관리할 수 있습니다. 다음 명령을 사용하여 마이그레이션 중에 사용자 지정 서비스 역할을 지정합니다.

```
PS C:\migrations_workspace> eb migrate --service-role "CustomServiceRole"
```

지정하지 않으면 **eb migrate**는 Elastic Beanstalk가 역할을 수임하도록 허용하는 신뢰 정책을 사용하여 `aws-elasticbeanstalk-service-role`라는 기본 서비스 역할을 생성합니다. 이 서비스 역할은 Elastic Beanstalk가 환경 상태를 모니터링하고 관리형 플랫폼 업데이트를 수행하는 데 필수적입니다. 서비스 역할에는 두 가지 관리형 정책이 필요합니다.
+ `AWSElasticBeanstalkEnhancedHealth` - Elastic Beanstalk가 향상된 상태 보고 시스템을 사용하여 인스턴스 및 환경 상태를 모니터링할 수 있도록 허용합니다.
+ `AWSElasticBeanstalkManagedUpdates` - 새 플랫폼 버전을 사용할 수 있을 때 환경 리소스 업데이트를 포함하여 Elastic Beanstalk가 관리형 플랫폼 업데이트를 수행할 수 있도록 허용합니다.

이러한 정책을 사용하면 서비스 역할은 다음에 대한 권한을 갖습니다.
+ Auto Scaling 그룹 생성 및 관리
+ Application Load Balancer 생성 및 관리
+ Amazon CloudWatch에 로그 업로드
+ EC2 인스턴스 관리

서비스 역할에 대한 자세한 내용은 Elastic Beanstalk 개발자 가이드의 [Elastic Beanstalk 서비스 역할](concepts-roles-service.md)를 참조하세요.

## 보안 그룹 구성
<a name="dotnet-migrating-applications-security-sg"></a>

**eb migrate** 명령은 IIS 사이트 바인딩을 기반으로 보안 그룹을 자동으로 구성합니다. 예를 들어 소스 환경에 포트 80, 443 및 8081을 사용하는 사이트가 있는 경우 다음과 같은 구성이 됩니다.

```
<site name="Default Web Site">
    <bindings>
        <binding protocol="http" bindingInformation="*:80:" />
        <binding protocol="https" bindingInformation="*:443:" />
    </bindings>
</site>
<site name="InternalAPI">
    <bindings>
        <binding protocol="http" bindingInformation="*:8081:" />
    </bindings>
</site>
```

마이그레이션 프로세스는 다음 작업을 완료합니다.
+ 인터넷(0.0.0.0/0)에서 포트 80 및 443의 인바운드 트래픽을 허용하는 로드 밸런서 보안 그룹을 생성합니다.
+ 로드 밸런서의 트래픽을 허용하는 EC2 보안 그룹을 생성합니다.
+ `--copy-firewall-config`이 지정된 경우 추가 포트(예: 8081)를 구성합니다.

기본적으로 Application Load Balancer는 인터넷에서 퍼블릭 액세스로 구성됩니다. 특정 IP 범위로 액세스를 제한하거나 프라이빗 로드 밸런서를 사용하는 등, 이 동작을 사용자 지정해야 하는 경우 `--vpc-config` 파라미터를 사용하여 기본 VPC 및 보안 그룹 구성을 재정의할 수 있습니다.

```
PS C:\migrations_workspace> eb migrate --vpc-config vpc-config.json
```

예를 들어 다음 `vpc-config.json` 구성은 프라이빗 서브넷에 프라이빗 로드 밸런서를 생성합니다.

```
{
    "id": "vpc-12345678",
    "publicip": "false",
    "elbscheme": "internal",
    "ec2subnets": ["subnet-private1", "subnet-private2"],
    "elbsubnets": ["subnet-private1", "subnet-private2"]
}
```

 VPC 구성 옵션에 대한 자세한 내용은 [VPC 구성](dotnet-migrating-applications-network.md#dotnet-migrating-applications-network-vpc) 단원을 참조하세요.

## SSL 인증서 통합
<a name="dotnet-migrating-applications-security-ssl"></a>

HTTPS 바인딩으로 사이트를 마이그레이션할 때는 AWS Certificate Manager (ACM)을 통해 SSL 인증서를 통합합니다.

```
PS C:\migrations_workspace> eb migrate --ssl-certificates "arn:aws:acm:region:account:certificate/certificate-id"
```

이 구성은 다음 작업을 완료합니다.
+ 인증서를 Application Load Balancer와 연결
+ 로드 밸런서에서 HTTPS 종료 유지
+ 로드 밸런서와 EC2 인스턴스 간의 내부 HTTP 통신 보존

## Windows 인증
<a name="dotnet-migrating-applications-security-windows"></a>

Windows 인증을 사용하는 애플리케이션의 경우 **eb migrate**는 다음과 같이 애플리케이션의 `web.config`에 인증 설정을 보존합니다.

```
<configuration>
    <system.webServer>
        <security>
            <authentication>
                <windowsAuthentication enabled="true">
                    <providers>
                        <add value="Negotiate" />
                        <add value="NTLM" />
                    </providers>
                </windowsAuthentication>
            </authentication>
        </security>
    </system.webServer>
</configuration>
```

**중요**  
**eb migrate** 명령은 소스 환경에서 대상 Elastic Beanstalk 인스턴스로 사용자 프로필 또는 계정을 복사하지 않습니다. 소스 서버에서 생성한 사용자 지정 사용자 계정 또는 그룹은 마이그레이션 후 대상 환경에서 다시 생성해야 합니다.

`IUSR`과 같은 기본 제공 Windows 계정과 `IIS_IUSRS`와 같은 그룹, 그리고 기타 모든 기본 제공 계정 및 그룹은 기본적으로 대상 Windows Server 인스턴스에 포함됩니다. 기본 제공 IIS 계정 및 그룹에 대한 자세한 내용은 Microsoft 설명서의 [IIS의 기본 제공 사용자 및 그룹 계정 이해](https://learn.microsoft.com/en-us/iis/get-started/planning-for-security/understanding-built-in-user-and-group-accounts-in-iis)를 참조하세요.

애플리케이션이 사용자 지정 Windows 사용자 계정 또는 Active Directory 통합에 의존하는 경우 마이그레이션이 완료된 후 이러한 측면을 별도로 구성해야 합니다.

## 모범 사례 및 문제 해결
<a name="dotnet-migrating-applications-security-best"></a>

### 관리 역할
<a name="dotnet-migrating-applications-security-best-role"></a>

Elastic Beanstalk 환경의 역할을 관리할 때 AWS IAM 모범 사례를 구현합니다.

역할 생성 및 관리  
+ 가능한 경우 AWS 관리형 정책을 사용하여 역할 생성
+ [IAM 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 따르기
+ 사용자 지정 정책에 [AWS 정책 생성기](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) 사용
+ 추가 보안을 위한 [권한 경계](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) 구현

모니터링 및 감사  
를 활성화 AWS CloudTrail 하여 역할 사용량을 모니터링합니다.  
+ [AWS CloudTrail 사용 설명서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html) 따르기
+ 실시간 모니터링을 위한 CloudWatch Logs 통합 구성
+ 무단 API 호출에 대한 알림 설정

정기 검토 프로세스  
분기별 검토 주기를 설정하여 다음 작업을 수행합니다.  
+ [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html)를 사용하여 미사용 권한 감사
+ 오래된 권한 제거
+ 최소 권한 원칙에 따라 역할 업데이트

### 인증서 관리
<a name="dotnet-migrating-applications-security-best-cert"></a>

Elastic Beanstalk 환경에서 SSL/TLS 인증서에 대해 다음 관행을 구현합니다.

인증서 수명 주기  
+ 인증서 관리에 [AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) 사용
+ ACM 발급 인증서에 대한 [자동 갱신](https://docs.aws.amazon.com/acm/latest/userguide/check-certificate-renewal-status.html) 활성화
+ [만료 알림](https://docs.aws.amazon.com/acm/latest/userguide/notifications-for-ACM.html) 설정

보안 표준  
+ TLS 1.2 이상 사용
+ HTTPS 리스너에 대한 [AWS 보안 정책](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) 준수
+ 필요한 경우 HTTP 엄격한 전송 보안(HSTS) 구현

### 보안 그룹 관리
<a name="dotnet-migrating-applications-security-best-sg"></a>

다음 보안 그룹 모범 사례를 구현합니다.

규칙 관리  
+ 모든 사용자 지정 포트 요구 사항 문서화
+ [VPC 흐름 로그](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)를 사용하여 트래픽 모니터링
+ 가능한 경우 IP 범위 대신 [보안 그룹 참조 규칙](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html) 사용

정기 감사  
월별 검토를 설정하여 다음 작업을 수행합니다.  
+ 미사용 규칙 식별 및 제거
+ 소스/대상 요구 사항 검증
+ 중복 규칙 확인

### 로깅 및 모니터링
<a name="dotnet-migrating-applications-security-best-logging"></a>

효과적인 보안 모니터링을 위해 다음 로그를 구성합니다.

EC2 인스턴스의 Windows 이벤트 로그  

```
# Review Security event log
PS C:\migrations_workspace> Get-EventLog -LogName Security -Newest 50

# Check Application event log
PS C:\migrations_workspace> Get-EventLog -LogName Application -Source "IIS*"
```

CloudWatch Logs 통합  
중앙 집중식 모니터링 및 알림을 위해 Windows 이벤트 로그를 CloudWatch로 스트리밍하도록 CloudWatch Logs 에이전트를 구성합니다.

지속적인 문제의 경우 이러한 로그를 수집하고 다음 정보를 AWS Support 사용하여에 문의하세요.
+ 환경 ID
+ 배포 ID(해당하는 경우)
+ 관련 오류 메시지
+ 보안 변경의 타임라인