

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

# Image Builder의 보안
<a name="image-builder-security"></a>

의 클라우드 보안 AWS 이 최우선 순위입니다. AWS 고객은 보안에 가장 민감한 조직의 요구 사항을 충족하도록 구축된 데이터 센터 및 네트워크 아키텍처의 이점을 누릴 수 있습니다.

보안은 AWS 와 사용자 간의 공동 책임입니다. [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/)은 이 사항을 클라우드*의* 보안 및 클라우드 *내* 보안으로 설명합니다.
+ **클라우드 보안 **- AWS 는 클라우드 AWS 서비스 에서 AWS 실행되는 인프라를 보호할 책임이 있습니다. AWS 또한는 안전하게 사용할 수 있는 서비스를 제공합니다. 타사 감사자는 [AWS 규정 준수 프로그램](https://aws.amazon.com/compliance/programs/) 일환으로 보안의 효과를 정기적으로 테스트하고 확인합니다. EC2 Image Builder에 적용되는 규정 준수 프로그램에 대한 자세한 내용은 [AWS 서비스 규정 준수 프로그램의 범위에 속하는](https://aws.amazon.com/compliance/services-in-scope/)를 참조합니다.
+ **클라우드의 보안** - 사용자의 책임은 사용하는 AWS 서비스에 따라 결정됩니다. 또한 귀하는 귀사의 데이터 민감도, 귀사의 요구 사항, 관련 법률 및 규정을 비롯한 기타 요소에 대해서도 책임이 있습니다.

이 설명서는 Image Builder 사용 시 공동 책임 모델을 적용하는 방법을 이해하는 데 도움이 됩니다. 다음 주제에서는 보안 및 규정 준수 목표를 충족하도록 Image Builder를 구성하는 방법을 보여줍니다. 또한 Image Builder 리소스를 모니터링하고 보호하는 데 도움이 AWS 서비스 되는 다른를 사용하는 방법을 알아봅니다.

**Topics**
+ [Image Builder의 데이터 보호 및 AWS 공동 책임 모델](data-protection.md)
+ [Image Builder의 자격 증명 및 액세스 관리 통합](security-iam.md)
+ [Image Builder에 대한 규정 준수 검증](compliance.md)
+ [Image Builder의 데이터 중복성 및 복원력](disaster-recovery-resiliency.md)
+ [Image Builder의 인프라 보안](infrastructure-security.md)
+ [Image Builder 이미지에 대한 패치 관리](security-patch-management.md)
+ [Image Builder의 보안 모범 사례](security-best-practices.md)

# Image Builder의 데이터 보호 및 AWS 공동 책임 모델
<a name="data-protection"></a>

 AWS [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/) EC2 Image Builder의 데이터 보호에 적용됩니다. 이 모델에 설명된 대로 AWS 는 모든를 실행하는 글로벌 인프라를 보호할 책임이 있습니다 AWS 클라우드. 사용자는 이 인프라에 호스팅되는 콘텐츠에 대한 통제 권한을 유지할 책임이 있습니다. 사용하는 AWS 서비스 의 보안 구성과 관리 태스크에 대한 책임도 사용자에게 있습니다. 데이터 프라이버시에 관한 자세한 내용은 [데이터 프라이버시 FAQ](https://aws.amazon.com/compliance/data-privacy-faq/)를 참조하세요. 유럽의 데이터 보호에 대한 자세한 내용은 *AWS 보안 블로그*의 [AWS 공동 책임 모델 및 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 블로그 게시물을 참조하세요.

데이터 보호를 위해 자격 증명을 보호하고 AWS 계정 AWS IAM Identity Center 또는 AWS Identity and Access Management (IAM)를 사용하여 개별 사용자를 설정하는 것이 좋습니다. 이렇게 하면 개별 사용자에게 자신의 직무를 충실히 이행하는 데 필요한 권한만 부여됩니다. 또한 다음과 같은 방법으로 데이터를 보호하는 것이 좋습니다.
+ 각 계정에 다중 인증(MFA)을 사용합니다.
+ SSL/TLS를 사용하여 AWS 리소스와 통신합니다. TLS 1.2는 필수이며 TLS 1.3을 권장합니다.
+ 를 사용하여 API 및 사용자 활동 로깅을 설정합니다 AWS CloudTrail. CloudTrail 추적을 사용하여 AWS 활동을 캡처하는 방법에 대한 자세한 내용은 *AWS CloudTrail 사용 설명서*의 [ CloudTrail 추적 작업을 참조하세요](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html).
+ 내부의 모든 기본 보안 제어와 함께 AWS 암호화 솔루션을 사용합니다 AWS 서비스.
+ Amazon S3에 저장된 민감한 데이터를 검색하고 보호하는 데 도움이 되는 Amazon Macie와 같은 고급 관리형 보안 서비스를 사용합니다.
+ 명령줄 인터페이스 또는 API를 AWS 통해에 액세스할 때 FIPS 140-3 검증 암호화 모듈이 필요한 경우 FIPS 엔드포인트를 사용합니다. 사용 가능한 FIPS 엔드포인트에 대한 자세한 내용은 [연방 정보 처리 표준(FIPS) 140-3](https://aws.amazon.com/compliance/fips/)을 참조하세요.

고객의 이메일 주소와 같은 기밀 정보나 중요한 정보는 태그나 **이름** 필드와 같은 자유 형식 텍스트 필드에 입력하지 않는 것이 좋습니다. 여기에는 Image Builder 또는 기타 AWS 서비스 에서 콘솔 AWS CLI, API 또는 AWS SDKs를 사용하여 작업하는 경우가 포함됩니다. 이름에 사용되는 태그 또는 자유 형식 텍스트 필드에 입력하는 모든 데이터는 청구 또는 진단 로그에 사용될 수 있습니다. 외부 서버에 URL을 제공할 때 해당 서버에 대한 요청을 검증하기 위해 자격 증명을 URL에 포함해서는 안 됩니다.

## Image Builder의 암호화 및 키 관리
<a name="ib-encryption"></a>

Image Builder는 서비스 소유의 KMS 키를 사용하여 전송 중 데이터와 저장된 데이터를 기본적으로 암호화합니다. 단, 다음과 같은 경우는 예외입니다.
+ **사용자 지정 구성 요소**-Image Builder는 기본 KMS 키 또는 서비스 소유 KMS 키를 사용하여 사용자 지정 구성 요소를 암호화합니다.
+ **이미지 워크플로**-Image Builder는 워크플로 생성 중에 키를 지정하는 경우 고객 관리형 키를 사용하여 이미지 워크플로를 암호화할 수 있습니다. Image Builder는 키로 암호화 및 복호화를 처리하여 이미지에 대해 구성한 워크플로를 실행합니다.

를 통해 자체 키를 관리할 수 있습니다 AWS KMS. 하지만 Image Builder가 소유한 Image Builder KMS 키를 관리할 권한은 없습니다. 를 사용하여 KMS 키를 관리하는 방법에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 [시작하기](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html)를 AWS Key Management Service참조하세요.

**암호화 컨텍스트**  
암호화된 데이터에 대한 무결성 및 신뢰성 검사를 추가로 제공하기 위해 데이터를 암호화할 때 [암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)를 포함할수 있습니다. 리소스가 암호화 컨텍스트로 암호화되면 AWS KMS 암호화 방식으로 컨텍스트를 사이퍼텍스트에 바인딩합니다. 요청자가 컨텍스트에 대해 대소문자를 구분하여 정확히 일치하는 항목을 제공하는 경우에만 리소스를 해독할 수 있습니다.

이 섹션의 정책 예제는 Image Builder 워크플로 리소스의 Amazon 리소스 이름(ARN)과 유사한 암호화 컨텍스트를 사용합니다.

### 고객 관리형 키로 이미지 워크플로 암호화
<a name="ib-workflow-encrypt-cmk"></a>

보호 계층을 추가하려면 Image Builder 워크플로 리소스를 자체 고객 관리형 키로 암호화할 수 있습니다. 고객 관리형 키를 사용하여 생성한 Image Builder 워크플로를 암호화하는 경우 Image Builder가 워크플로 리소스를 암호화 및 복호화할 때 Image Builder가 키를 사용하도록 키 정책에서 액세스 권한을 부여해야 합니다. 언제든지 액세스 권한을 취소할 수 있습니다. 그러나 키에 대한 액세스 권한을 취소할 경우 Image Builder는 이미 암호화된 워크플로에 액세스할 수 없습니다.

Image Builder에 고객 관리형 키를 사용할 수 있는 액세스 권한을 부여하는 프로세스는 다음과 같이 두 단계로 되어 있습니다.

**1단계: Image Builder 워크플로에 키 정책 권한 추가**  
워크플로를 만들거나 사용할 때 Image Builder에서 워크플로 리소스를 암호화하고 해독할 수 있도록 하려면 KMS 키 정책에 권한을 지정해야 합니다.

이 예제의 키 정책은 Image Builder 파이프라인이 생성 프로세스 중에 워크플로 리소스를 암호화하고 워크플로 리소스를 해독하여 사용할 수 있는 액세스 권한을 부여합니다. 또한 이 정책은 주요 관리자에게 액세스 권한을 부여합니다. 암호화 컨텍스트 및 리소스 사양은 와일드카드를 사용하여 워크플로 리소스가 있는 모든 리전을 포함합니다.

이미지 워크플로를 사용하기 위한 전제 조건으로 Image Builder에 워크플로 작업을 실행할 권한을 부여하는 IAM 워크플로 실행 역할을 생성했습니다. 다음 키 정책 예제에 표시된 첫 번째 명령문의 위탁자는 IAM 워크플로 실행 역할을 지정해야 합니다.

고객 관리형 키에 대한 자세한 내용은AWS Key Management Service 개발자 안내서의 [고객 관리형 키 액세스 관리](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)를 참조하세요.

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "Allow access to build images with encrypted workflow",
			"Effect": "Allow",
			"Principal": {
				"AWS": "arn:aws:iam::111122223333:role/YourImageBuilderExecutionRole"
			},
			"Action": [
				"kms:Decrypt",
				"kms:GenerateDataKey"
			],
			"Resource": "*",
			"Condition": {
				"StringLike": {
					"kms:EncryptionContext:aws:imagebuilder:arn": "arn:aws:imagebuilder:*:111122223333:workflow/*"
				}
			}
		},
		{
			"Sid": "Allow access for key administrators",
			"Effect": "Allow",
			"Principal": {
				"AWS": "arn:aws:iam::111122223333:root"
			},
			"Action": [
				"kms:*"
			],
			"Resource": "arn:aws:kms:*:111122223333:key/*"
		}
	]
}
```

------

**2단계: 워크플로 실행 역할에 대한 키 액세스 권한 부여**  
Image Builder가 워크플로를 실행하기 위해 맡는 IAM 역할에는 고객 관리형 키를 사용할 권한이 필요합니다. 키에 액세스하지 않으면 Image Builder에서 해당 키로 워크플로 리소스를 암호화 또는 복호화할 수 없습니다.

워크플로 실행 역할의 정책을 편집하여 다음 정책 설명을 추가합니다.

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "AllowAccessToWorkflowKey",
			"Effect": "Allow",
			"Action": [
				"kms:Decrypt",
				"kms:GenerateDataKey"
			],
			"Resource": "arn:aws:kms:us-west-2:111122223333:key/key_ID",
			"Condition": {
				"StringLike": {
					"kms:EncryptionContext:aws:imagebuilder:arn": "arn:aws:imagebuilder:*:111122223333:workflow/*"
				}
			}
		}
	]
}
```

------

### AWS CloudTrail 이미지 워크플로에 대한 이벤트
<a name="ib-workflow-cloudtrail-examples"></a>

다음 예제에서는 고객 관리형 키로 저장된 이미지 워크플로를 암호화하고 복호화하기 위한 일반적인 AWS CloudTrail 항목을 보여줍니다.

**예: GenerateDataKey**  
이 예제는 Image Builder가 Image Builder API 작업에서 API **CreateWorkflow** 작업을 호출할 AWS KMS **GenerateDataKey** 때 CloudTrail 이벤트가 어떻게 보일 수 있는지 보여줍니다. Image Builder는 워크플로 리소스를 생성하기 전에 새 워크플로를 암호화해야 합니다.

```
{
	"eventVersion": "1.08",
	"userIdentity": {
		"type": "AssumedRole",
		"principalId": "PRINCIPALID1234567890:workflow-role-name",
		"arn": "arn:aws:sts::111122223333:assumed-role/Admin/workflow-role-name",
		"accountId": "111122223333",
		"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
		"sessionContext": {
			"sessionIssuer": {
				"type": "Role",
				"principalId": "PRINCIPALID1234567890",
				"arn": "arn:aws:iam::111122223333:role/Admin",
				"accountId": "111122223333",
				"userName": "Admin"
			},
			"webIdFederationData": {},
			"attributes": {
				"creationDate": "2023-11-21T20:29:31Z",
				"mfaAuthenticated": "false"
			}
		},
		"invokedBy": "imagebuilder.amazonaws.com"
	},
	"eventTime": "2023-11-21T20:31:03Z",
	"eventSource": "kms.amazonaws.com",
	"eventName": "GenerateDataKey",
	"awsRegion": "us-west-2",
	"sourceIPAddress": "imagebuilder.amazonaws.com",
	"userAgent": "imagebuilder.amazonaws.com",
	"requestParameters": {
		"encryptionContext": {
			"aws:imagebuilder:arn": "arn:aws:imagebuilder:us-west-2:111122223333:workflow/build/sample-encrypted-workflow/1.0.0/*",
			"aws-crypto-public-key": "key value"
		},
		"keyId": "arn:aws:kms:us-west-2:111122223333:alias/ExampleKMSKey",
		"numberOfBytes": 32
	},
	"responseElements": null,
	"requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
	"eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
	"readOnly": true,
	"resources": [
		{
			"accountId": "111122223333",
			"type": "AWS::KMS::Key",
			"ARN": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEzzzzz"
		}
	],
	"eventType": "AwsApiCall",
	"managementEvent": true,
	"recipientAccountId": "111122223333",
	"eventCategory": "Management"
}
```

**예: Decrypt**  
이 예제는 Image Builder가 Image Builder API 작업에서 API **GetWorkflow** 작업을 호출할 AWS KMS **Decrypt** 때 CloudTrail 이벤트가 어떻게 보일 수 있는지 보여줍니다. Image Builder 파이프라인은 워크플로 리소스를 사용하기 전에 먼저 복호화해야 합니다.

```
{
	"eventVersion": "1.08",
	"userIdentity": {
		"type": "AssumedRole",
		"principalId": "PRINCIPALID1234567890:workflow-role-name",
		"arn": "arn:aws:sts::111122223333:assumed-role/Admin/workflow-role-name",
		"accountId": "111122223333",
		"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
		"sessionContext": {
			"sessionIssuer": {
				"type": "Role",
				"principalId": "PRINCIPALID1234567890",
				"arn": "arn:aws:iam::111122223333:role/Admin",
				"accountId": "111122223333",
				"userName": "Admin"
			},
			"webIdFederationData": {},
			"attributes": {
				"creationDate": "2023-11-21T20:29:31Z",
				"mfaAuthenticated": "false"
			}
		},
		"invokedBy": "imagebuilder.amazonaws.com"
	},
	"eventTime": "2023-11-21T20:34:25Z",
	"eventSource": "kms.amazonaws.com",
	"eventName": "Decrypt",
	"awsRegion": "us-west-2",
	"sourceIPAddress": "imagebuilder.amazonaws.com",
	"userAgent": "imagebuilder.amazonaws.com",
	"requestParameters": {
		"keyId": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEzzzzz",
		"encryptionAlgorithm": "SYMMETRIC_DEFAULT",
		"encryptionContext": {
			"aws:imagebuilder:arn": "arn:aws:imagebuilder:us-west-2:111122223333:workflow/build/sample-encrypted-workflow/1.0.0/*",
			"aws-crypto-public-key": "ABC123def4567890abc12345678/90dE/F123abcDEF+4567890abc123D+ef1=="
		}
	},
	"responseElements": null,
	"requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
	"eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
	"readOnly": true,
	"resources": [
		{
			"accountId": "111122223333",
			"type": "AWS::KMS::Key",
			"ARN": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEzzzzz"
		}
	],
	"eventType": "AwsApiCall",
	"managementEvent": true,
	"recipientAccountId": "111122223333",
	"eventCategory": "Management"
}
```

## Image Builder의 데이터 스토리지
<a name="ib-data-storage"></a>

Image Builder는 서비스에 어떤 로그도 저장하지 않습니다. 모든 로그는 이미지를 빌드하는 데 사용되는 Amazon EC2 인스턴스 또는 Systems Manager 자동화 로그에 저장됩니다.

## Image Builder의 인터네트워크 트래픽 프라이버시
<a name="image-builder-internetwork"></a>

Image Builder와 온프레미스 위치 간, AWS 리전 내 AZs 간, HTTPS를 통해 AWS 리전 간 연결이 보호됩니다. 계정 간에는 직접 연결이 없습니다.

# Image Builder의 자격 증명 및 액세스 관리 통합
<a name="security-iam"></a>

**Topics**
+ [대상](#security-iam-audience)
+ [ID를 통한 인증](#security-iam-authentication)
+ [Image Builder가 IAM 정책 및 역할을 사용하는 방법](security_iam_service-with-iam.md)
+ [Image Builder에서 S3 버킷 다운로드 액세스의 데이터 경계 관리](security-iam-data-perimeter.md)
+ [Image Builder 자격 증명 기반 정책](security-iam-identity-based-policies.md)
+ [사용자 지정 워크플로에 대한 IAM 권한](#security-iam-custom-workflows)
+ [Image Builder 리소스 기반 정책](#security-iam-resource-based-policies)
+ [EC2 Image Builder에 대한 AWS 관리형 정책 사용](security-iam-awsmanpol.md)
+ [Image Builder의 IAM 서비스 연결 역할 사용](image-builder-service-linked-role.md)
+ [Image Builder의 IAM 문제 해결](security_iam_troubleshoot.md)

## 대상
<a name="security-iam-audience"></a>

 AWS Identity and Access Management (IAM)를 사용하는 방법은 역할에 따라 다릅니다.
+ **서비스 사용자** - 기능에 액세스할 수 없는 경우 관리자에게 권한 요청(참조[Image Builder의 IAM 문제 해결](security_iam_troubleshoot.md))
+ **서비스 관리자** - 사용자 액세스 결정 및 권한 요청 제출([Image Builder가 IAM 정책 및 역할을 사용하는 방법](security_iam_service-with-iam.md) 참조)
+ **IAM 관리자** - 액세스를 관리하기 위한 정책 작성([Image Builder 자격 증명 기반 정책](security_iam_service-with-iam.md#security_iam_id-based-policy-examples) 참조)

## ID를 통한 인증
<a name="security-iam-authentication"></a>

의 사용자 및 프로세스에 인증을 제공하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [자격 증명을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) AWS 계정참조하세요.

# Image Builder가 IAM 정책 및 역할을 사용하는 방법
<a name="security_iam_service-with-iam"></a>

IAM을 사용하여 Image Builder에 대한 액세스를 관리하기 전에 Image Builder와 함께 사용할 수 있는 IAM 기능을 알아봅니다.

Image Builder 및 기타 AWS 서비스가 대부분의 IAM 기능과 작동하는 방식을 전체적으로 알아보려면 *IAM 사용 설명서*의 [AWS IAM으로 작업하는 서비스를](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) 참조하세요.

## Image Builder를 위한 자격 증명 기반 정책
<a name="security_iam_service-with-iam-id-based-policies"></a>

**ID 기반 정책 지원:** 예

ID 기반 정책은 IAM 사용자, 사용자 그룹 또는 역할과 같은 ID에 연결할 수 있는 JSON 권한 정책 문서입니다. 이러한 정책은 사용자 및 역할이 어떤 리소스와 어떤 조건에서 어떤 작업을 수행할 수 있는지를 제어합니다. 자격 증명 기반 정책을 생성하는 방법을 알아보려면 *IAM 사용 설명서*에서 [고객 관리형 정책으로 사용자 지정 IAM 권한 정의](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)를 참조하세요.

IAM ID 기반 정책을 사용하면 허용되거나 거부되는 작업과 리소스뿐 아니라 작업이 허용되거나 거부되는 조건을 지정할 수 있습니다. JSON 정책에서 사용할 수 있는 모든 요소에 대해 알아보려면 *IAM 사용 설명서*의 [IAM JSON 정책 요소 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)를 참조하세요.

### Image Builder의 자격 증명 기반 정책 예
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Image Builder 자격 증명 기반 정책의 예를 보려면 [Image Builder 자격 증명 기반 정책](#security_iam_id-based-policy-examples)(을)를 참조합니다.

## Image Builder 내 리소스 기반 정책
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**리소스 기반 정책 지원:** 예

리소스 기반 정책은 리소스에 연결하는 JSON 정책 설명서입니다. 리소스 기반 정책의 예제는 IAM *역할 신뢰 정책*과 Amazon S3 *버킷 정책*입니다. 리소스 기반 정책을 지원하는 서비스에서 서비스 관리자는 이러한 정책을 사용하여 특정 리소스에 대한 액세스를 통제할 수 있습니다. 정책이 연결된 리소스의 경우 정책은 지정된 보안 주체가 해당 리소스와 어떤 조건에서 어떤 작업을 수행할 수 있는지를 정의합니다. 리소스 기반 정책에서 [보안 주체를 지정](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)해야 합니다. 보안 주체에는 계정, 사용자, 역할, 페더레이션 사용자 또는이 포함될 수 있습니다 AWS 서비스.

교차 계정 액세스를 활성화하려는 경우, 전체 계정이나 다른 계정의 IAM 개체를 리소스 기반 정책의 보안 주체로 지정할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM에서 교차 계정 리소스 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)를 참조하세요.

## Image Builder의 정책 작업
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**정책 작업 지원:** 예

관리자는 AWS JSON 정책을 사용하여 누가 무엇에 액세스할 수 있는지 지정할 수 있습니다. 즉, 어떤 **보안 주체**가 어떤 **리소스**와 어떤 **조건**에서 **작업**을 수행할 수 있는지를 지정할 수 있습니다.

JSON 정책의 `Action`요소는 정책에서 액세스를 허용하거나 거부하는 데 사용할 수 있는 작업을 설명합니다. 연결된 작업을 수행할 수 있는 권한을 부여하기 위한 정책에 작업을 포함하세요.



Image Builder 작업 목록을 보려면 *서비스 권한 부여 참조*의 [EC2 Image Builder에서 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2imagebuilder.html#amazonec2imagebuilder-actions-as-permissions)을 참조합니다.

Image Builder의 정책 작업은 작업 앞에 다음 접두사를 사용합니다.

```
imagebuilder
```

단일 문에서 여러 작업을 지정하려면 쉼표로 구분합니다.

```
"Action": [
	"imagebuilder:action1",
	"imagebuilder:action2"
	]
```





Image Builder 자격 증명 기반 정책의 예를 보려면 [Image Builder 자격 증명 기반 정책](#security_iam_id-based-policy-examples)(을)를 참조합니다.

## Image Builder용 정책 리소스
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**정책 리소스 지원:** 예

관리자는 AWS JSON 정책을 사용하여 누가 무엇에 액세스할 수 있는지 지정할 수 있습니다. 즉, 어떤 **보안 주체**가 어떤 **리소스**와 어떤 **조건**에서 **작업**을 수행할 수 있는지를 지정할 수 있습니다.

`Resource` JSON 정책 요소는 작업이 적용되는 하나 이상의 객체를 지정합니다. 모범 사례에 따라 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)을 사용하여 리소스를 지정합니다. 리소스 수준 권한을 지원하지 않는 작업의 경우, 와일드카드(\$1)를 사용하여 해당 문이 모든 리소스에 적용됨을 나타냅니다.

```
"Resource": "*"
```

Image Builder 리소스 유형 및 해당 ARN 목록을 보려면 *서비스 권한 부여 참조*의 [EC2 Image Builder가 정의한 리소스](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2imagebuilder.html#amazonec2imagebuilder-resources-for-iam-policies)를 참조합니다. 각 리소스의 ARN을 지정할 수 있는 작업을 알아보려면 [EC2 Image Builder가 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2imagebuilder.html#amazonec2imagebuilder-actions-as-permissions)을 참조합니다.

Image Builder 자격 증명 기반 정책의 예를 보려면 [Image Builder 자격 증명 기반 정책](#security_iam_id-based-policy-examples)(을)를 참조합니다.

## Image Builder의 정책 조건 키
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**서비스별 정책 조건 키 지원:** 예

관리자는 AWS JSON 정책을 사용하여 누가 무엇에 액세스할 수 있는지 지정할 수 있습니다. 즉, 어떤 **보안 주체**가 어떤 **리소스**와 어떤 **조건**에서 **작업**을 수행할 수 있는지를 지정할 수 있습니다.

`Condition` 요소는 정의된 기준에 따라 문이 실행되는 시기를 지정합니다. 같음(equals) 또는 미만(less than)과 같은 [조건 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)를 사용하여 정책의 조건을 요청의 값과 일치시키는 조건식을 생성할 수 있습니다. 모든 AWS 전역 조건 키를 보려면 *IAM 사용 설명서*의 [AWS 전역 조건 컨텍스트 키를](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) 참조하세요.

Image Builder 조건 키 목록을 보려면 *서비스 인증 참조*의 [EC2 Image Builder의 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2imagebuilder.html#amazonec2imagebuilder-policy-keys)를 참조합니다. 조건 키를 사용할 수 있는 작업과 리소스를 알아보려면 [EC2 Image Builder가 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2imagebuilder.html#amazonec2imagebuilder-actions-as-permissions)을 참조합니다.

Image Builder 자격 증명 기반 정책의 예를 보려면 [Image Builder 자격 증명 기반 정책](#security_iam_id-based-policy-examples)(을)를 참조합니다.

## Image Builder의 ACL
<a name="security_iam_service-with-iam-acls"></a>

**ACL 지원:** 아니요 

액세스 제어 목록(ACL)은 어떤 보안 주체(계정 멤버, 사용자 또는 역할)가 리소스에 액세스할 수 있는 권한을 가지고 있는지를 제어합니다. ACL은 JSON 정책 문서 형식을 사용하지 않지만 리소스 기반 정책과 유사합니다.

## Image Builder의 ABAC
<a name="security_iam_service-with-iam-tags"></a>

**ABAC 지원(정책의 태그):** 부분적

속성 기반 액세스 제어(ABAC)는 태그라고 불리는 속성을 기반으로 권한을 정의하는 권한 부여 전략입니다. IAM 엔터티 및 AWS 리소스에 태그를 연결한 다음 보안 주체의 태그가 리소스의 태그와 일치할 때 작업을 허용하는 ABAC 정책을 설계할 수 있습니다.

태그에 근거하여 액세스를 제어하려면 `aws:ResourceTag/key-name`, `aws:RequestTag/key-name`또는 `aws:TagKeys`조건 키를 사용하여 정책의 [조건 요소](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)에 태그 정보를 제공합니다.

서비스가 모든 리소스 유형에 대해 세 가지 조건 키를 모두 지원하는 경우, 값은 서비스에 대해 **예**입니다. 서비스가 일부 리소스 유형에 대해서만 세 가지 조건 키를 모두 지원하는 경우, 값은 **부분적**입니다.

ABAC에 대한 자세한 내용은 *IAM 사용 설명서*의 [ABAC 권한 부여를 통한 권한 정의](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)를 참조하세요. ABAC 설정 단계가 포함된 자습서를 보려면 *IAM 사용 설명서*의 [속성 기반 액세스 제어(ABAC) 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)을 참조하세요.

## Image Builder에서 임시 보안 인증 사용
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**임시 자격 증명 지원:** 예

임시 자격 증명은 AWS 리소스에 대한 단기 액세스를 제공하며 페더레이션 또는 전환 역할을 사용할 때 자동으로 생성됩니다. 장기 액세스 키를 사용하는 대신 임시 자격 증명을 동적으로 생성하는 것이 AWS 좋습니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM의 임시 보안 자격 증명](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) 및 [IAM으로 작업하는AWS 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) 섹션을 참조하세요.

## Image Builder의 서비스 간 위탁자 권한
<a name="security_iam_service-with-iam-principal-permissions"></a>

**전달 액세스 세션(FAS) 지원:** 예

 전달 액세스 세션(FAS)은를 호출하는 보안 주체의 권한을 다운스트림 서비스에 AWS 서비스 대한 요청과 AWS 서비스함께 사용합니다. FAS 요청 시 정책 세부 정보는 [전달 액세스 세션](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)을 참조하세요.

## Image Builder의 서비스 역할
<a name="security_iam_service-with-iam-roles-service"></a>

**서비스 역할 지원:** 예

 서비스 역할은 서비스가 사용자를 대신하여 작업을 수행하는 것으로 가정하는 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)입니다. IAM 관리자는 IAM 내에서 서비스 역할을 생성, 수정 및 삭제할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [AWS 서비스 AWS에 권한을 위임할 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)을 참조하세요.

**주의**  
서비스 역할에 대한 권한을 변경하면 Image Builder 기능이 중단될 수 있습니다. Image Builder에서 관련 지침을 제공하는 경우에만 서비스 역할을 편집합니다.

## Image Builder의 서비스 연결 역할
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**서비스 연결 역할 지원:** 예

 서비스 연결 역할은에 연결된 서비스 역할의 한 유형입니다 AWS 서비스. 서비스는 사용자를 대신하여 작업을 수행하기 위해 역할을 수임할 수 있습니다. 서비스 연결 역할은에 표시 AWS 계정 되며 서비스가 소유합니다. IAM 관리자는 서비스 연결 역할의 권한을 볼 수 있지만 편집은 할 수 없습니다.

Image Builder 서비스 연결 역할에 대한 자세한 내용은 [Image Builder의 IAM 서비스 연결 역할 사용](image-builder-service-linked-role.md)(을)를 참조합니다.

## Image Builder 자격 증명 기반 정책
<a name="security_iam_id-based-policy-examples"></a>

IAM 자격 증명 기반 정책을 사용하면 허용되거나 거부되는 작업과 리소스 및 작업이 허용되거나 거부되는 조건도 지정할 수 있습니다. Image Builder는 특정 작업, 리소스 및 조건 키를 지원합니다. JSON 정책에서 사용하는 모든 요소에 대한 자세한 내용은 *IAM 사용자 설명서*의 [Amazon EC2 Image Builder의 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2imagebuilder.html)를 참조합니다.

### 작업
<a name="sec-iam-ib-id-based-policies-actions"></a>

Image Builder의 정책 작업은 작업 전에 `imagebuilder:` 접두사를 사용합니다. 정책 문에는 `Action` 또는 `NotAction` 요소가 포함되어야 합니다. Image Builder는 이 서비스로 수행할 수 있는 태스크를 설명하는 고유한 작업 세트를 정의합니다.

명령문 하나에 여러 태스크를 지정하려면 다음과 같이 쉼표로 구분합니다.

```
"Action": [
	"imagebuilder:action1",
	"imagebuilder:action2"
]
```

와일드카드(\$1)를 사용하여 여러 작업을 지정할 수 있습니다. 예를 들어, `List`라는 단어로 시작하는 모든 작업을 지정하려면 다음 작업을 포함합니다.

```
"Action": "imagebuilder:List*"
```

Image Builder 작업 목록을 보려면 *IAM 사용자 설명서*의 [AWS 서비스를 위한 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)를 참조합니다.

### 정책을 사용하여 액세스 관리
<a name="security-iam-manage-access"></a>

정책을 생성하고 IAM 자격 증명 또는 AWS 리소스 AWS 에 연결하여에서 액세스를 관리하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [정책 및 권한을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html).

인스턴스 프로파일에 연결하는 IAM 역할에는 이미지에 포함된 빌드 및 테스트 구성 요소를 실행할 수 있는 권한이 있어야 합니다. 다음 IAM 역할 정책은 인스턴스 프로파일과 관련된 IAM 역할에 연결되어야 합니다.
+ EC2InstanceProfileForImageBuilder
+ EC2InstanceProfileForImageBuilderECRContainerBuilds
+ AmazonSSMManagedInstanceCore

### 리소스
<a name="sec-iam-ib-id-based-policies-resources"></a>

관리자는 AWS JSON 정책을 사용하여 누가 무엇에 액세스할 수 있는지 지정할 수 있습니다. 즉, 어떤 **보안 주체**가 어떤 **리소스**와 어떤 **조건**에서 **작업**을 수행할 수 있는지를 지정할 수 있습니다.

`Resource` JSON 정책 요소는 작업이 적용되는 하나 이상의 객체를 지정합니다. 모범 사례에 따라 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)을 사용하여 리소스를 지정합니다. 리소스 수준 권한을 지원하지 않는 작업의 경우, 와일드카드(\$1)를 사용하여 해당 문이 모든 리소스에 적용됨을 나타냅니다.

```
"Resource": "*"
```

ARN은 리소스를 식별하고 이름이 고유한지 확인하는 데 도움이 되는 여러 노드로 구성됩니다. 이름의 마지막 노드에는 리소스 유형, 이름 및 ID의 형식에 여러 가지 변형이 포함됩니다. Image Builder는 리소스를 생성할 때 다음 형식을 사용합니다.

`arn:aws:imagebuilder:region:owner:resource-type/resource-name/version/build-version`

**참고**  
빌드 버전이 리소스 ARN에 항상 포함되는 것은 아닙니다. 그러나 [GetComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_GetComponent.html)와 같은 일부 API 작업은 검색할 리소스를 고유하게 식별하려면 빌드 버전이 필요합니다.

Image Builder가 기본 이미지 또는 구성 요소와 같이 레시피에서 사용하는 리소스의 경우 소유자 노드는 다음 중 하나일 수 있습니다.
+ 리소스 소유자의 계정 번호
+ Amazon 관리형 리소스의 경우: `aws`
+  AWS Marketplace 리소스의 경우: `aws-marketplace`

다음 예제는 Linux에 Amazon CloudWatch 에이전트를 설치하기 위한 관리형 구성 요소의 ARN을 보여줍니다.

```
arn:aws:imagebuilder:us-east-1:aws:component/amazon-cloudwatch-agent-linux/1.0.1/1
```

이 예제는 AWS Marketplace다음에서 가상의 관리형 구성 요소에 대한 ARN을 보여줍니다.

```
arn:aws:imagebuilder:us-east-1:aws-marketplace:component/example-linux-software-component/1.0.1
```

소유권 필터 사용을 포함하여 구성 요소 목록을 가져오는 방법에 대한 자세한 내용은 섹션을 참조하세요[Image Builder 구성 요소 나열](component-details.md#list-components).

**예제 ARN**  
다음은 IAM 정책에서 지정할 수 있는 리소스 ARNs의 몇 가지 예입니다.
+ 인스턴스 ARN

  ```
  "Resource": "arn:aws:imagebuilder:us-east-1:111122223333:instance/i-1234567890abcdef0"
  ```
+ 특정 계정의 모든 인스턴스를 지정하는 와일드카드(\$1) 예제

  ```
  "Resource": "arn:aws:imagebuilder:us-east-1:111122223333:instance/*"
  ```
+ 관리형 이미지 워크플로의 모든 버전을 지정하는 와일드카드(\$1) 예제

  ```
  "Resource": "arn:aws:imagebuilder:us-east-1:aws:workflow/build/build-image/*"
  ```
+ 관리형 이미지 ARN

  ```
  "Resource": "arn:aws:imagebuilder:us-east-1:aws:image/amazon-linux-2-arm64/2024.12.17/1"
  ```
+ 관리형 이미지의 모든 버전을 지정하는 와일드카드(\$1) 예제

  ```
  "Resource": "arn:aws:imagebuilder:us-east-1:aws:image/amazon-linux-2-arm64/x.x.x"
  ```

다양한 EC2 Image Builder API 작업에는 여러 리소스가 관여합니다. 단일 문에서 여러 리소스를 지정하려면 ARN을 쉼표로 구분합니다.

```
"Resource": [
	  "resource1",
	  "resource2"
]
```

### 조건 키
<a name="sec-iam-ib-id-based-policies-conditionkeys"></a>

Image Builder는 서비스별 조건 키를 제공하고 일부 글로벌 조건 키를 사용하여 지원합니다. 모든 AWS 전역 조건 키를 보려면 *IAM 사용 설명서*의 [AWS 전역 조건 컨텍스트 키를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html). 다음과 같은 서비스별 조건 키가 제공됩니다.

#### imagebuilder:CreatedResourceTagKeys
<a name="image-builder-security-createdresourcetagkeys"></a>

[문자열 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)를 사용합니다.

요청에 태그 키가 있는지 여부를 기준으로 액세스를 필터링하는 이 키를 사용합니다. 이를 통해 Image Builder가 생성하는 리소스를 관리할 수 있습니다.

**가용성** — 이 키는 `CreateInfrastrucutreConfiguration` 및 `UpdateInfrastructureConfiguration` API에서만 사용할 수 있습니다.

#### imagebuilder:CreatedResourceTag/<key>
<a name="image-builder-security-createdresourcetag"></a>

[문자열 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)를 사용합니다.

Image Builder가 생성한 리소스에 연결된 태그 키-값 페어를 기준으로 액세스를 필터링하는 데 이 키를 사용합니다. 이렇게 하면 정의된 태그를 통해 Image Builder 리소스를 관리할 수 있습니다.

**가용성** — 이 키는 `CreateInfrastrucutreConfiguration` 및 `UpdateInfrastructureConfiguration` API에서만 사용할 수 있습니다.

#### imagebuilder:LifecyclePolicyResourceType
<a name="image-builder-security-lifecyclepolicyresourcetype"></a>

[문자열 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)를 사용합니다.

이 키를 사용하여 요청에 지정된 수명 주기 리소스 유형을 기준으로 액세스를 필터링합니다.

이 키의 값은 `AMI_IMAGE` 또는 일 수 있습니다`CONTAINER_IMAGE`.

**가용성** — 이 키는 `CreateLifecyclePolicy` 및 `UpdateLifecyclePolicy` API에서만 사용할 수 있습니다.

#### imagebuilder:Ec2MetadataHttpTokens
<a name="image-builder-security-ec2metadatatokens"></a>

[문자열 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)를 사용합니다.

요청에 지정된 EC2 인스턴스 메타데이터 HTTP 토큰 요구 사항을 기준으로 액세스를 필터링하는 이 키를 사용합니다.

이 키의 값은 `optional` 또는 `required`일 수 있습니다.

**가용성** — 이 키는 `CreateInfrastrucutreConfiguration` 및 `UpdateInfrastructureConfiguration` API에서만 사용할 수 있습니다.

#### imagebuilder:StatusTopicArn
<a name="image-builder-security-statustopicarn"></a>

[문자열 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)를 사용합니다.

터미널 상태 알림을 게시하는 요청에서 SNS Topic ARN을 기준으로 액세스를 필터링하는 이 키를 사용합니다.

**가용성** — 이 키는 `CreateInfrastrucutreConfiguration` 및 `UpdateInfrastructureConfiguration` API에서만 사용할 수 있습니다.

### 예제
<a name="sec-iam-ib-id-based-policies-examples"></a>



Image Builder 자격 증명 기반 정책의 예를 보려면 [Image Builder 자격 증명 기반 정책](security-iam-identity-based-policies.md)(을)를 참조합니다.

## Image Builder 리소스 기반 정책
<a name="security-iam-service-with-ib-resource-based-policies"></a>

리소스 기반 정책은 지정된 위탁자가 Image Builder 리소스에 대해 수행할 수 있는 작업 및 관련 조건을 지정합니다. Image Builder는 구성 요소, 이미지 및 이미지 레시피에 대한 리소스 기반 권한 정책을 지원합니다. 리소스 기반 정책을 사용하여 리소스별로 다른 계정에 사용 권한을 부여할 수 있습니다. 리소스 기반 정책을 사용하여 AWS 서비스가 구성 요소, 이미지 및 이미지 레시피에 액세스하도록 허용할 수도 있습니다.

구성 요소, 이미지 또는 이미지 레시피에 리소스 기반 정책을 연결하는 방법에 대한 자세한 내용은 [와 Image Builder 리소스 공유 AWS RAM](manage-shared-resources.md)(을)를 참조합니다.

**참고**  
Image Builder를 사용하여 리소스 정책을 업데이트하면 업데이트가 RAM 콘솔에 표시됩니다.

## Image Builder 태그 기반 권한 부여
<a name="security-iam-service-with-ib-tags"></a>

태그를 Image Builder 리소스에 연결하거나 Image Builder 요청을 통해 태그를 에 전달할 수 있습니다. 태그에 근거하여 액세스를 제어하려면 `imagebuilder:ResourceTag/key-name`, `aws:RequestTag/key-name`또는 `aws:TagKeys`조건 키를 사용하여 정책의 [조건 요소](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)에 태그 정보를 제공합니다. Image Builder 리소스 태깅에 대한 자세한 내용은 [에서 리소스에 태그 지정 AWS CLI](tag-resources.md#cli-tag-resource)(을)를 참조합니다.

## Image Builder IAM 역할
<a name="security-iam-service-with-ib-roles"></a>

[IAM 역할은](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) 특정 권한이 AWS 계정 있는 내의 엔터티입니다.

### Image Builder에서 임시 보안 인증 사용
<a name="security-iam-service-with-ib-roles-tempcreds"></a>

임시 보안 인증을 사용하여 페더레이션을 통해 로그인하거나, IAM 역할을 맡거나, 교차 계정 역할을 맡을 수 있습니다. [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 또는 [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)과 같은 AWS STS API 작업을 호출하여 임시 보안 자격 증명을 얻습니다.

### 서비스 연결 역할
<a name="sec-iam-ib-service-linked-roles"></a>

[서비스 연결 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) 사용하면 AWS 서비스 가 다른 서비스의 리소스에 액세스하여 사용자를 대신하여 작업을 완료할 수 있습니다. 서비스 연결 역할은 IAM 계정에 나타나고 서비스가 소유합니다. 관리자 엑세스를 가진 사용자는 서비스 연결 역할에 대한 권한을 볼 수는 있지만 편집할 수는 없습니다.

Image Builder는 서비스 연결 역할을 지원합니다. Image Builder 서비스 연결 역할을 생성하거나 관리하는 방법에 대한 자세한 내용은 [Image Builder의 IAM 서비스 연결 역할 사용](image-builder-service-linked-role.md)(을)를 참조합니다.

### 서비스 역할
<a name="sec-iam-ib-service-roles"></a>

이 기능을 사용하면 서비스가 사용자를 대신하여 [서비스 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)을 수임할 수 있습니다. 이 역할을 사용하면 서비스가 다른 서비스의 리소스에 액세스해 사용자를 대신해 작업을 완료할 수 있습니다. 서비스 역할은 IAM 계정에 나타나고, 해당 계정이 소유합니다. 즉, 관리자 엑세스를 가진 사용자가 이 역할에 대한 권한을 변경할 수 있습니다. 그러나 권한을 변경하면 서비스의 기능이 손상될 수 있습니다.

# Image Builder에서 S3 버킷 다운로드 액세스의 데이터 경계 관리
<a name="security-iam-data-perimeter"></a>

EC2 Image Builder는 계정에서 Image Builder 워크로드를 실행하는 데 필요한 다운로드 가능한 리소스가 포함된 AWS 서비스 소유 S3 버킷의 두 가지 클래스를 유지 관리합니다. 데이터 경계를 사용하여 환경에서 Amazon S3에 대한 액세스를 제어하는 경우 이러한 버킷에 대한 액세스를 명시적으로 허용해야 할 수 있습니다. Amazon S3에 대한 액세스를 제어하는 방법에 따라 버킷 ARN 또는 버킷 URL을 사용하여 이러한 버킷을 허용할 수 있습니다.

**구성 요소 관리 부트스트래핑 스크립트(필수)**  
이 S3 버킷에는 이미지를 생성하는 데 사용되는 EC2 인스턴스에서 AWSTOE 애플리케이션을 설정하는 부트스트래핑 스크립트가 포함되어 있습니다. Image Builder는 새 이미지에 대한 빌드 및 테스트를 지원하기 위해 스크립트를 다운로드할 수 있는 액세스 권한이 필요합니다.  
+ **S3 버킷 ARN:** `arn:<AWS partition>:s3:::ec2imagebuilder-managed-resources-<AWS Region>-prod`
+ **S3 버킷 URL:** `https://ec2imagebuilder-managed-resources-<AWS Region>.s3.<AWS Region>.<AWS partition-specific domain name>`

**관리형 구성 요소**  
이 S3 버킷에는 Amazon 관리형 구성 요소에 대한 패키지 페이로드가 포함되어 있습니다. Image Builder를 사용하려면 레시피에 구성된 관리형 구성 요소를 다운로드할 수 있는 액세스 권한이 필요합니다.  
+ **S3 버킷 ARN:** `arn:<AWS partition>:s3:::ec2imagebuilder-toe-<AWS Region>-prod`
+ **S3 버킷 URL:** `https://ec2imagebuilder-toe-<AWS Region>.s3.<AWS Region>.<AWS partition-specific domain name>`

# Image Builder 자격 증명 기반 정책
<a name="security-iam-identity-based-policies"></a>

**Topics**
+ [자격 증명 기반 정책 모범 사례](#security-iam-service-policy-best-practices)
+ [Image Builder 콘솔 사용](#sec-iam-id-based-policies-using-console)

## 자격 증명 기반 정책 모범 사례
<a name="security-iam-service-policy-best-practices"></a>

ID 기반 정책에 따라 계정에서 사용자가 Image Builder 리소스를 생성, 액세스 또는 삭제할 수 있는지 여부가 결정됩니다. 이 작업으로 인해 AWS 계정에 비용이 발생할 수 있습니다. ID 기반 정책을 생성하거나 편집할 때는 다음 지침과 권장 사항을 따르세요.
+ ** AWS 관리형 정책을 시작하고 최소 권한으로 전환 -** 사용자 및 워크로드에 권한 부여를 시작하려면 많은 일반적인 사용 사례에 대한 권한을 부여하는 *AWS 관리형 정책을* 사용합니다. 에서 사용할 수 있습니다 AWS 계정. 사용 사례에 맞는 AWS 고객 관리형 정책을 정의하여 권한을 추가로 줄이는 것이 좋습니다. 자세한 내용은 *IAM 사용 설명서*의 [AWS 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) 또는 [AWS 직무에 대한 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)을 참조하세요.
+ **최소 권한 적용** – IAM 정책을 사용하여 권한을 설정하는 경우, 작업을 수행하는 데 필요한 권한만 부여합니다. 이렇게 하려면 *최소 권한*으로 알려진 특정 조건에서 특정 리소스에 대해 수행할 수 있는 작업을 정의합니다. IAM을 사용하여 권한을 적용하는 방법에 대한 자세한 정보는 *IAM 사용 설명서*에 있는 [IAM의 정책 및 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)을 참조하세요.
+ **IAM 정책의 조건을 사용하여 액세스 추가 제한** – 정책에 조건을 추가하여 작업 및 리소스에 대한 액세스를 제한할 수 있습니다. 예를 들어, SSL을 사용하여 모든 요청을 전송해야 한다고 지정하는 정책 조건을 작성할 수 있습니다. AWS 서비스와 같은 특정를 통해 사용되는 경우 조건을 사용하여 서비스 작업에 대한 액세스 권한을 부여할 수도 있습니다 CloudFormation. 자세한 내용은 *IAM 사용 설명서*의 [IAM JSON 정책 요소: 조건](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)을 참조하세요.
+ **IAM Access Analyzer를 통해 IAM 정책을 확인하여 안전하고 기능적인 권한 보장** - IAM Access Analyzer에서는 IAM 정책 언어(JSON)와 모범 사례가 정책에서 준수되도록 새로운 및 기존 정책을 확인합니다. IAM Access Analyzer는 100개 이상의 정책 확인 항목과 실행 가능한 추천을 제공하여 안전하고 기능적인 정책을 작성하도록 돕습니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM Access Analyzer에서 정책 검증](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)을 참조하세요.
+ **다중 인증(MFA) 필요 -**에서 IAM 사용자 또는 루트 사용자가 필요한 시나리오가 있는 경우 추가 보안을 위해 MFA를 AWS 계정켭니다. API 작업을 직접적으로 호출할 때 MFA가 필요하면 정책에 MFA 조건을 추가합니다. 자세한 내용은 *IAM 사용 설명서*의 [MFA를 통한 보안 API 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)를 참조하세요.

IAM의 모범 사례에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.

## Image Builder 콘솔 사용
<a name="sec-iam-id-based-policies-using-console"></a>

EC2 Image Builder 콘솔에 액세스하려면 최소 권한 집합이 있어야 합니다. 이러한 권한은 AWS 계정에서 Image Builder 리소스에 대한 세부 정보를 나열하고 볼 수 있도록 허용합니다. 최소 필수 권한보다 더 제한적인 보안 인증 기반 정책을 만들면 콘솔이 해당 정책에 연결된 개체(IAM 사용자 또는 역할)에 대해 의도대로 작동하지 않습니다.

IAM 엔터티가 Image Builder 콘솔을 사용할 수 있도록 하려면 다음 AWS 관리형 정책 중 하나를 연결해야 합니다.
+ [AWSImageBuilderReadOnlyAccess 정책](security-iam-awsmanpol.md#sec-iam-manpol-AWSImageBuilderReadOnlyAccess)
+ [AWSImageBuilderFullAccess 정책](security-iam-awsmanpol.md#sec-iam-manpol-AWSImageBuilderFullAccess)

Image Builder 관리형 정책에 대한 자세한 내용은 [EC2 Image Builder에 대한 AWS 관리형 정책 사용](security-iam-awsmanpol.md)(을)를 참조합니다.

**중요**  
Image Builder 서비스 연결 역할을 생성하려면 **AWSImageBuilderFullAccess** 정책이 필요합니다. 이 정책을 IAM 엔티티에 연결할 때는 다음과 같은 사용자 지정 정책도 연결하고 리소스 이름에 `imagebuilder`(이)가 없는 사용하려는 리소스를 포함해야 합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": "arn:aws:sns:*:*:*imagebuilder*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetInstanceProfile"
            ],
            "Resource": "arn:aws:iam::*:instance-profile/*imagebuilder*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::*:instance-profile/*imagebuilder*",
                "arn:aws:iam::*:role/*imagebuilder*"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "ec2.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3::*:*imagebuilder*"
        }
    ]
}
```

------

 AWS CLI 또는 AWS API만 호출하는 사용자에게는 최소 콘솔 권한을 허용할 필요가 없습니다. 그 대신 수행하려는 API 작업과 일치하는 작업에만 액세스할 수 있도록 합니다.

## 사용자 지정 워크플로에 대한 IAM 권한
<a name="security-iam-custom-workflows"></a>

와 같은 특정 단계 작업과 함께 사용자 지정 워크플로를 사용하는 경우 표준 Image Builder 관리형 정책 외에 [RegisterImage](wfdoc-step-actions.md#wfdoc-step-action-register-image)추가 IAM 권한이 필요할 수 있습니다. 이 섹션에서는 사용자 지정 워크플로 단계 작업에 필요한 추가 권한을 설명합니다.

### RegisterImage 단계 작업 권한
<a name="security-iam-registerimage-permissions"></a>

`RegisterImage` 단계 작업에는 AMIs 등록하고 선택적으로 스냅샷 태그를 검색하기 위한 특정 Amazon EC2 권한이 필요합니다. `includeSnapshotTags` 파라미터를 사용할 때는 스냅샷을 설명하는 데 추가 권한이 필요합니다.

**RegisterImage 단계 작업에 필요한 권한:**

모든 리소스에 대해 다음 작업을 허용합니다.
+ `ec2:RegisterImage`
+ `ec2:DescribeSnapshots`

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:RegisterImage",
                "ec2:DescribeSnapshots"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:*::image/*",
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": "RegisterImage"
                }
            }
        }
    ]
}
```

**권한 세부 정보:**
+ `ec2:RegisterImage` - 스냅샷에서 새 AMIs 등록하는 데 필요합니다.
+ `ec2:DescribeSnapshots` -를 사용하여 AMI 태그와 병합`includeSnapshotTags: true`하기 위한 스냅샷 태그를 검색할 때 필요합니다.
+ `ec2:CreateTags` - Image Builder 기본 태그와 병합된 스냅샷 태그를 모두 포함하여 등록된 AMI에 태그를 적용하는 데 필요합니다.

**참고**  
`ec2:DescribeSnapshots` 권한은 `includeSnapshotTags` 파라미터가 로 설정된 경우에만 사용됩니다`true`. 이 기능을 사용하지 않는 경우이 권한을 생략할 수 있습니다.

**태그 병합 동작:**

`includeSnapshotTags`이 활성화되면 RegisterImage 단계 작업은 다음을 수행합니다.
+ 블록 디바이스 매핑에 지정된 첫 번째 스냅샷에서 태그 검색
+  AWS 예약 태그 제외("aws:"로 시작하는 키가 있는 태그)
+ 스냅샷 태그를 Image Builder의 기본 AMI 등록 태그와 병합
+ 태그 키 충돌 시 Image Builder 태그에 우선 순위 부여

## Image Builder 리소스 기반 정책
<a name="security-iam-resource-based-policies"></a>

구성 요소를 생성하는 방법에 대한 자세한 내용은 [구성 요소를 사용하여 Image Builder 이미지 사용자 지정](manage-components.md)(을)를 참조합니다.

### Image Builder 구성 요소 액세스를 특정 IP 주소로 제한
<a name="sec-iam-resourcepol-restrict-component-by-ip"></a>

다음 예에서는 구성 요소에서 모든 Image Builder 작업을 수행할 수 있는 권한을 모든 사용자에게 부여합니다. 하지만 조건에 지정된 IP 주소 범위에서만 요청을 허용해야 합니다.

이 문의 조건은 허용되는 IPv4(인터넷 프로토콜 버전 4) IP 주소의 54.240.143.\$1 범위를 식별하며 단, 한 가지 예외는 54.240.143.188입니다.

`Condition` 블록은 `IpAddress` 및 `NotIpAddress` 조건과 AWS전체 `aws:SourceIp` 조건 키인 조건 키를 사용합니다. 이러한 조건 키에 대한 자세한 내용은 [정책의 조건 지정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html)을 참조합니다. `aws:sourceIp` IPv4 값은 표준 CIDR 표기법을 사용합니다. 자세한 내용은 *IAM 사용자 설명서*의 [IP 주소 조건 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_IPAddress)를 참조합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "IBPolicyId1",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Action": "imagebuilder:GetComponent",
      "Resource": "arn:aws:imagebuilder:*::examplecomponent/*",
      "Condition": {
         "IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
         "NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"} 
      } 
    } 
  ]
}
```

------

# EC2 Image Builder에 대한 AWS 관리형 정책 사용
<a name="security-iam-awsmanpol"></a>

 AWS 관리형 정책은에서 생성하고 관리하는 독립 실행형 정책입니다 AWS. AWS 관리형 정책은 사용자, 그룹 및 역할에 권한 할당을 시작할 수 있도록 많은 일반적인 사용 사례에 대한 권한을 제공하도록 설계되었습니다.

 AWS 관리형 정책은 모든 AWS 고객이 사용할 수 있으므로 특정 사용 사례에 대해 최소 권한을 부여하지 않을 수 있습니다. 사용 사례에 고유한 [고객 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)을 정의하여 권한을 줄이는 것이 좋습니다.

 AWS 관리형 정책에 정의된 권한은 변경할 수 없습니다. 가 관리형 정책에 정의된 권한을 AWS 업데이트하는 AWS 경우 업데이트는 정책이 연결된 모든 보안 주체 자격 증명(사용자, 그룹 및 역할)에 영향을 미칩니다. AWS AWS 서비스 는 새가 시작되거나 기존 서비스에 새 API 작업을 사용할 수 있게 되면 AWS 관리형 정책을 업데이트할 가능성이 높습니다.

자세한 내용은 *IAM 사용자 가이드*의 [AWS 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)을 참조하세요.

## AWSImageBuilderFullAccess 정책
<a name="sec-iam-manpol-AWSImageBuilderFullAccess"></a>

**AWSImageBuilderFullAccess** 정책은 연결된 역할에 Image Builder 리소스에 대한 전체 액세스 권한을 부여하여 역할이 Image Builder 리소스를 나열, 설명, 생성, 업데이트 및 삭제할 수 있도록 허용합니다. 또한이 정책은 리소스를 확인하거나의 계정에 대한 현재 리소스를 표시하는 데 AWS 서비스 필요한 관련에 대상 권한을 부여합니다 AWS Management Console.

### 권한 세부 정보
<a name="sec-iam-manpol-AWSImageBuilderFullAccess-details"></a>

이 정책에는 다음 권한이 포함되어 있습니다.
+ **Image Builder** - 관리 권한이 부여되어 해당 역할이 Image Builder 리소스를 나열, 설명, 생성, 업데이트 및 삭제할 수 있습니다.
+ **Amazon EC2** - 리소스 존재를 확인하거나 계정에 속한 리소스 목록을 가져오는 데 필요한 Amazon EC2 Describe 작업에 대한 액세스 권한이 부여됩니다.
+ **IAM** - 이름에 ‘imagebuilder’가 포함된 인스턴스 프로필을 가져와 사용하고, `iam:GetRole` API 작업을 통해 Image Builder 서비스 연결 역할이 있는지 확인하고, Image Builder 서비스 연결 역할을 생성할 수 있는 액세스 권한이 부여됩니다.
+ **License Manager** - 리소스에 대한 라이선스 구성 또는 라이선스를 나열할 수 있는 액세스 권한이 부여됩니다.
+ **Amazon S3** - 계정에 속한 버킷과 이름에 ‘imagebuilder’가 포함된 Image Builder 버킷을 나열할 수 있는 액세스 권한이 부여됩니다.
+ **Amazon SNS** - Amazon SNS에 ‘imagebuilder’를 포함하는 주제에 대한 주제 소유권을 확인할 수 있는 쓰기 권한이 부여됩니다.

이 정책의 권한을 보려면 *AWS 관리형 정책 참조*의 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSImageBuilderFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSImageBuilderFullAccess.html)를 참조하세요.

## AWSImageBuilderReadOnlyAccess 정책
<a name="sec-iam-manpol-AWSImageBuilderReadOnlyAccess"></a>

이 **AWSImageBuilderReadOnlyAccess** 정책은 모든 Image Builder 리소스에 대한 읽기 전용 액세스 권한을 제공합니다. `iam:GetRole` API 작업을 통해 Image Builder 서비스 연결 역할이 존재하는지 확인할 수 있는 권한이 부여됩니다.

### 권한 세부 정보
<a name="sec-iam-manpol-AWSImageBuilderReadOnlyAccess-details"></a>

이 정책에는 다음 권한이 포함되어 있습니다.
+ **Image Builder** - Image Builder 리소스에 대한 읽기 전용 액세스 권한이 부여됩니다.
+ **IAM** - API 작업을 통해 Image Builder 서비스 연결 역할이 있는지 확인할 수 있는 액세스 권한이 부여됩니다`iam:GetRole`.

이 정책의 권한을 보려면 *AWS 관리형 정책 참조*의 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSImageBuilderReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSImageBuilderReadOnlyAccess.html)를 참조하세요.

## AWSServiceRoleForImageBuilder 정책
<a name="sec-iam-manpol-AWSServiceRoleForImageBuilder"></a>

이 **AWSServiceRoleForImageBuilder** 정책은 Image Builder가 사용자를 대신하여 AWS 서비스 를 호출하도록 허용합니다.

### 권한 세부 정보
<a name="sec-iam-manpol-AWSServiceRoleForImageBuilder-details"></a>

이 정책은 Image Builder 서비스 연결 역할이 Systems Manager를 통해 생성될 때 해당 역할에 연결됩니다. Image Builder 서비스 연결 역할에 대한 자세한 내용은 [Image Builder의 IAM 서비스 연결 역할 사용](image-builder-service-linked-role.md) 섹션을 참조하세요.

다음 정책에는 이러한 권한이 포함됩니다.
+ **CloudWatch Logs** - 이름이 `/aws/imagebuilder/`(으)로 시작하는 모든 로그 그룹에 CloudWatch 로그를 생성하고 업로드할 수 있는 액세스 권한이 부여됩니다.
+ **Amazon EC2** - Image Builder가 계정에서 EC2 인스턴스를 생성하고 시작하는 이미지(AMIs)를 생성, 스냅샷 생성 및 등록할 수 있는 액세스 권한이 부여됩니다. Image Builder는 생성되거나 사용되는 이미지, 인스턴스 및 볼륨에 `CreatedBy: EC2 Image Builder` 또는 로 태그가 지정된 경우 필요에 따라 관련 스냅샷, 볼륨, 네트워크 인터페이스, 서브넷, 보안 그룹, 라이선스 구성 및 키 페어를 사용합니다`CreatedBy: EC2 Fast Launch`.

  Image Builder는 Amazon EC2 이미지, 인스턴스 속성, 인스턴스 상태, 계정에서 사용할 수 있는 인스턴스 유형, 시작 템플릿, 서브넷, 호스트, Amazon EC2 리소스의 태그에 대한 정보를 가져올 수 있습니다.

  Image Builder는 이미지 설정을 업데이트하여 이미지에 `CreatedBy: EC2 Image Builder` 태그가 지정된 계정에서 Windows 인스턴스의 빠른 실행을 활성화하거나 비활성화할 수 있습니다.

  또한 Image Builder는 계정에서 실행 중인 인스턴스를 시작, 중지 및 종료하고, Amazon EBS 스냅샷을 공유하고, 이미지를 생성 및 업데이트하고, 템플릿을 시작하고, 기존 이미지를 등록 취소하고, 태그를 추가하고, **Ec2ImageBuilderCrossAccountDistributionAccess** 정책을 통해 권한을 부여한 계정 간에 이미지를 복제할 수 있습니다. 앞에서 설명한 대로 이러한 모든 작업에는 Image Builder 태그 지정이 필요합니다.
+ **Amazon ECR** - Image Builder는 컨테이너 이미지 취약성 스캔에 필요한 경우 리포지토리를 생성하고 생성한 리소스에 태그를 지정하여 작업 범위를 제한할 수 있는 액세스 권한을 부여합니다. 또한 Image Builder가 취약성 스냅샷을 생성한 후 스캔을 위해 생성한 컨테이너 이미지를 삭제할 수 있는 액세스 권한도 부여됩니다.
+ **EventBridge** - Image Builder에서 EventBridge 규칙을 생성하고 관리할 수 있는 액세스 권한이 부여됩니다.
+ **IAM** - Image Builder가 사용자 계정의 모든 역할을 Amazon EC2와 VM Import/Export에 넘길 수 있는 액세스 권한이 부여됩니다.
+ **Amazon Inspector** - Image Builder는 Amazon Inspector가 빌드 인스턴스 스캔을 완료하는 시점을 결정하고 이를 허용하도록 구성된 이미지에 대한 결과를 수집할 수 있는 액세스 권한이 부여됩니다.
+ **AWS KMS** - Amazon EBS에 Amazon EBS 볼륨을 암호화, 복호화 또는 재암호화할 수 있는 액세스 권한이 부여됩니다. 이는 Image Builder가 이미지를 빌드할 때 암호화된 볼륨이 작동하도록 하는 데 매우 중요합니다.
+ **라이선스 관리자** - Image Builder에 `license-manager:UpdateLicenseSpecificationsForResource`를 통해 라이선스 관리자 사양을 업데이트할 수 있는 액세스 권한이 부여됩니다.
+ **Amazon SNS**-계정 내 모든 Amazon SNS 주제에 대한 쓰기 권한이 부여됩니다.
+ **Systems Manager**-Image Builder에서 Systems Manager 명령 및 호출, 인벤토리 항목을 나열하고, 인스턴스 정보와 자동화 실행 상태를 설명하고, 인스턴스 배치 지원에 대한 호스트를 설명하고, 명령 간접 호출 세부 정보를 가져올 수 있는 액세스 권한이 부여됩니다. 또한 Image Builder는 자동화 신호를 보내고 계정의 모든 리소스에 대한 자동화 실행을 중지할 수 있습니다.

  Image Builder는 `AWS-RunPowerShellScript`, `AWS-RunShellScript` 또는 `AWSEC2-RunSysprep` 스크립트 파일에 `"CreatedBy": "EC2 Image Builder"` 태그가 지정된 모든 인스턴스에 실행 명령 간접 호출을 실행할 수 있습니다. Image Builder를 사용하면 사용자 계정에서 이름이 `ImageBuilder`로 시작하는 자동화 문서에 대해 Systems Manager 자동화 실행을 시작할 수 있습니다.

  Image Builder는 또한 연결 문서가 `AWS-GatherSoftwareInventory`인 경우에 한해 사용자 계정의 모든 인스턴스에 대해 상태 관리자 연결을 만들거나 삭제할 수 있으며 사용자 계정에서 Systems Manager 서비스 연결 역할을 생성할 수 있습니다.

  Image Builder는 퍼블릭 파라미터 스토어 파라미터를 읽고 접두사가 인 프라이빗 파라미터를 읽고 업데이트할 수 `/imagebuilder/` 있으므로 Image Builder가 새 빌드에서 생성하는 출력 AMI IDs로 파라미터 값을 업데이트할 수 있습니다.
+ **AWS STS** - 역할에 대한 신뢰 정책이 허용하는 모든 계정에 대해 귀하의 계정에서 **EC2ImageBuilderDistributionCrossAccountRole**로 명명된 역할을 맡을 수 있도록 Image Builder에 대한 액세스 권한이 부여됩니다. 교차 계정 Image Builder에 사용됩니다.

이 정책의 권한을 보려면 *AWS 관리형 정책 참조*의 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSServiceRoleForImageBuilder.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSServiceRoleForImageBuilder.html)를 참조하세요.

## Ec2ImageBuilderCrossAccountDistributionAccess 정책
<a name="sec-iam-manpol-Ec2ImageBuilderCrossAccountDistributionAccess"></a>

**Ec2ImageBuilderCrossAccountDistributionAccess** 정책은 Image Builder가 대상 리전의 여러 계정에 이미지를 배포할 수 있는 권한을 부여합니다. 또한 Image Builder는 계정의 모든 Amazon EC2 이미지를 설명하고 복사하고 태그를 적용할 수 있습니다. 또한 이 정책은 `ec2:ModifyImageAttribute` API 작업을 통해 AMI 권한을 수정할 수 있는 권한을 부여합니다.

### 권한 세부 정보
<a name="sec-iam-manpol-Ec2ImageBuilderCrossAccountDistributionAccess-details"></a>

이 정책에는 다음 권한이 포함되어 있습니다.
+ **Amazon EC2** - Amazon EC2에 이미지 속성을 설명, 복사 및 수정하고 계정 내 모든 Amazon EC2 이미지에 대한 태그를 생성할 수 있는 액세스 권한이 부여됩니다.

이 정책의 권한을 보려면 *AWS 관리형 정책 참조*의 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2ImageBuilderCrossAccountDistributionAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2ImageBuilderCrossAccountDistributionAccess.html)를 참조하세요.

## EC2ImageBuilderLifecycleExecutionPolicy 정책
<a name="sec-iam-manpol-EC2ImageBuilderLifecycleExecutionPolicy"></a>

이 **EC2ImageBuilderLifecycleExecutionPolicy** 정책은 Image Builder에 Image Builder 이미지 리소스 및 기본 리소스(AMI, 스냅샷)의 사용 중단, 비활성화 또는 삭제와 같은 작업을 수행할 수 있는 권한을 부여하여 이미지 수명 주기 관리 작업에 대한 자동화된 규칙을 지원합니다.

### 권한 세부 정보
<a name="sec-iam-manpol-EC2ImageBuilderLifecycleExecutionPolicy-details"></a>

이 정책에는 다음 권한이 포함되어 있습니다.
+ **Amazon EC2**-Amazon EC2가 `CreatedBy: EC2 Image Builder`로 태그가 지정된 계정의 Amazon Machine Image(AMI)에 대해 다음 작업을 수행할 수 있는 액세스 권한이 부여됩니다.
  + AMI 활성화 및 비활성화.
  + 이미지 사용 중지 활성화 및 비활성화.
  + AMI 설명 및 등록 취소.
  + AMI 이미지 속성 설명 및 수정.
  + AMI와 연결된 볼륨 스냅샷 삭제.
  + 리소스에 대한 태그 검사.
  + 지원 중단을 위해 AMI에서 태그를 추가 또는 삭제.
+ **Amazon ECR**-Amazon ECR이 `LifecycleExecutionAccess: EC2 Image Builder` 태그를 사용하여 ECR 리포지토리에서 다음과 같은 일괄 작업을 수행할 수 있는 액세스 권한이 부여됩니다. 일괄 작업은 자동화된 컨테이너 이미지 수명 주기 규칙을 지원합니다.
  + `ecr:BatchGetImage`
  + `ecr:BatchDeleteImage`

  `LifecycleExecutionAccess: EC2 Image Builder` 태그가 지정된 ECR 리포지토리에 대해서는 리포지토리 수준에서 액세스 권한이 부여됩니다.
+ **AWS 리소스 그룹** - Image Builder가 태그를 기반으로 리소스를 가져올 수 있는 액세스 권한이 부여됩니다.
+ **EC2 Image Builder**-Image Builder가 Image Builder 이미지 리소스를 삭제할 수 있는 액세스 권한이 부여됩니다.

이 정책의 권한을 보려면 *AWS 관리형 정책 참조*의 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2ImageBuilderLifecycleExecutionPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2ImageBuilderLifecycleExecutionPolicy.html)를 참조하세요.

## EC2InstanceProfileForImageBuilder 정책
<a name="sec-iam-manpol-EC2InstanceProfileForImageBuilder"></a>

이 **EC2InstanceProfileForImageBuilder** 정책은 EC2 인스턴스가 Image Builder와 함께 작동하는 데 필요한 최소 권한을 부여합니다. Systems Manager 에이전트를 사용하는 데 필요한 권한은 여기에 포함되지 않습니다.

### 권한 세부 정보
<a name="sec-iam-manpol-EC2InstanceProfileForImageBuilder-details"></a>

이 정책에는 다음 권한이 포함되어 있습니다.
+ **CloudWatch Logs** - 이름이 `/aws/imagebuilder/`(으)로 시작하는 모든 로그 그룹에 CloudWatch 로그를 생성하고 업로드할 수 있는 액세스 권한이 부여됩니다.
+ **Amazon EC2** - 볼륨 및 스냅샷을 설명하고, Image Builder가 생성한 볼륨 또는 스냅샷 리소스의 스냅샷을 생성하고, Image Builder 리소스에 대한 태그를 생성할 수 있는 액세스 권한이 부여됩니다.
+ **Image Builder** - Image Builder 또는 AWS Marketplace 구성 요소를 가져올 수 있는 액세스 권한이 부여됩니다.
+ **AWS KMS** - Image Builder 구성 요소가를 통해 암호화된 경우 복호화할 수 있는 액세스 권한이 부여됩니다 AWS KMS.
+ **Amazon S3** - 이름이 로 시작하는 Amazon S3 버킷에 저장된 객체 `ec2imagebuilder-`또는 ISO 파일 확장자가 있는 리소스를 가져올 수 있는 액세스 권한이 부여됩니다.

이 정책의 권한을 보려면 *AWS 관리형 정책 참조*의 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceProfileForImageBuilder.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceProfileForImageBuilder.html)를 참조하세요.

## EC2InstanceProfileForImageBuilderECRContainerBuilds 정책
<a name="sec-iam-manpol-EC2InstanceProfileForImageBuilderECRContainerBuilds"></a>

**EC2InstanceProfileForImageBuilderECRContainerBuilds** 정책은 Image Builder로 작업하여 Docker 이미지를 구축한 다음 Amazon ECR 컨테이너 리포지토리에 이미지를 등록 및 저장할 때 EC2 인스턴스에 필요한 최소 권한을 부여합니다. Systems Manager 에이전트를 사용하는 데 필요한 권한은 여기에 포함되지 않습니다.

### 권한 세부 정보
<a name="sec-iam-manpol-EC2InstanceProfileForImageBuilderECRContainerBuilds-details"></a>

이 정책에는 다음 권한이 포함되어 있습니다.
+ **CloudWatch Logs** - 이름이 `/aws/imagebuilder/`(으)로 시작하는 모든 로그 그룹에 CloudWatch 로그를 생성하고 업로드할 수 있는 액세스 권한이 부여됩니다.
+ **Amazon ECR** - Amazon ECR이 컨테이너 이미지를 가져오고, 등록하고, 저장하고, 인증 토큰을 받을 수 있는 액세스 권한이 부여됩니다.
+ **Image Builder** - Image Builder 구성 요소 또는 컨테이너 레시피를 가져올 수 있는 액세스 권한이 부여됩니다.
+ **AWS KMS** -를 통해 암호화된 경우 Image Builder 구성 요소 또는 컨테이너 레시피를 해독할 수 있는 액세스 권한이 부여됩니다 AWS KMS.
+ **Amazon S3** - 이름이 `ec2imagebuilder-`(으)로 시작하는 Amazon S3 버킷에 저장된 객체를 가져올 수 있는 액세스 권한이 부여됩니다.

이 정책의 권한을 보려면 *AWS 관리형 정책 참조*의 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceProfileForImageBuilderECRContainerBuilds.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceProfileForImageBuilderECRContainerBuilds.html)를 참조하세요.

## AWS 관리형 정책에 대한 Image Builder 업데이트
<a name="security-iam-awsmanpol-updates"></a>

이 섹션에서는이 서비스가 이러한 변경 사항을 추적하기 시작한 이후 Image Builder의 AWS 관리형 정책 업데이트에 대한 정보를 제공합니다. 이 페이지의 변경 사항에 대한 자동 알림을 받으려면 Image Builder [문서 기록](doc-history.md) 페이지에서 RSS 피드를 구독하세요.




| 변경 | 설명 | Date | 
| --- | --- | --- | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder)-기존 정책 업데이트  |  Image Builder는 서비스 역할을 다음과 같이 변경했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2026년 2월 26일 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) - 기존 정책 업데이트  |  Image Builder는 레시피 및 이미지 배포 중에 AWS Systems Manager (SSM) 파라미터 스토어 파라미터 사용을 지원하기 위해 서비스 역할을 다음과 같이 변경했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2025년 7월 23일 | 
|  [EC2InstanceProfileForImageBuilder](#sec-iam-manpol-EC2InstanceProfileForImageBuilder) - 기존 정책 업데이트  |  Image Builder는 ISO 파일 다운로드를 위한 더 많은 파일 확장자를 지원하도록 인스턴스 프로파일 정책을 다음과 같이 변경했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2025년 5월 19일 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) - 기존 정책 업데이트  |  Image Builder는 Microsoft 클라이언트 OS ISO 파일을 기본 이미지로 가져올 수 있도록 서비스 역할을 다음과 같이 변경했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2024년 12월 30일 | 
|  [EC2InstanceProfileForImageBuilder](#sec-iam-manpol-EC2InstanceProfileForImageBuilder) - 기존 정책 업데이트  |  Image Builder는 디스크 이미지 파일에서 이미지 생성을 지원하기 위해 인스턴스 프로파일 정책을 다음과 같이 변경했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2024년 12월 30일 | 
|  [EC2InstanceProfileForImageBuilder](#sec-iam-manpol-EC2InstanceProfileForImageBuilder) - 정책 업데이트  |  Image Builder가 AWS Marketplace 구성 요소를 가져올 수 있도록 Image Builder에서 `EC2InstanceProfileForImageBuilder` 정책을 업데이트했습니다.  | 2024년 12월 2일 | 
|  [EC2ImageBuilderLifecycleExecutionPolicy](#sec-iam-manpol-EC2ImageBuilderLifecycleExecutionPolicy) - 새 정책  |  Image Builder는 이미지 수명 주기 관리에 대한 권한이 포함된 새 `EC2ImageBuilderLifecycleExecutionPolicy` 정책을 추가했습니다.  | 2023년 11월 17일 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder)-기존 정책 업데이트  |  Image Builder는 인스턴스 배치 지원 제공을 위해 서비스 역할을 다음과 같이 변경했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2023년 10월 19일 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) - 기존 정책 업데이트  |  Image Builder는 인스턴스 배치 지원 제공을 위해 서비스 역할을 다음과 같이 변경했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2023년 9월 28일 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder)-기존 정책 업데이트  |  Image Builder는 Image Builder 워크플로에서 AMI 및 ECR 컨테이너 이미지 빌드 모두에 대한 취약성 결과를 수집할 수 있도록 서비스 역할을 다음과 같이 변경했습니다. 새 권한은 CVE 탐지 및 보고 기능을 지원합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2023년 3월 30일 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder)-기존 정책 업데이트  |  Image Builder는 서비스 역할을 다음과 같이 변경했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2022년 3월 22일 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder)-기존 정책 업데이트  |  Image Builder는 서비스 역할을 다음과 같이 변경했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2022년 2월 21일 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder)-기존 정책 업데이트  |  Image Builder는 서비스 역할을 다음과 같이 변경했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2021년 11월 20일 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder)-기존 정책 업데이트  |  Image Builder는 둘 이상의 인벤토리 연결로 인해 이미지 빌드가 중단되는 문제를 해결하기 위해 새 사용 권한을 추가했습니다.  | 2021년 8월 11일 | 
|  [AWSImageBuilderFullAccess](#sec-iam-manpol-AWSImageBuilderFullAccess)-기존 정책 업데이트  |  Image Builder는 전체 액세스 역할을 다음과 같이 변경했습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2021년 4월 13일 | 
|  Image Builder에서 변경 내용 추적 시작  |  Image Builder가 AWS 관리형 정책에 대한 변경 사항 추적을 시작했습니다.  | 2021년 4월 2일 | 

# Image Builder의 IAM 서비스 연결 역할 사용
<a name="image-builder-service-linked-role"></a>

EC2 Image Builder는 AWS Identity and Access Management (IAM) [서비스 연결 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) 사용합니다. 서비스 연결 역할은 Image Builder에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 Image Builder에서 사전 정의하며 서비스가 AWS 서비스 사용자를 대신하여 다른를 호출하는 데 필요한 모든 권한을 포함합니다.

서비스 연결 역할을 사용하면 필요한 권한을 수동으로 추가할 필요가 없으므로 Image Builder를 더 효율적으로 설정할 수 있습니다. Image Builder는 서비스 연결 역할의 권한을 정의하며, 다르게 정의되지 않는 한 Image Builder만 해당 역할을 수임할 수 있습니다. 정의된 권한에는 신뢰 정책과 권한 정책이 포함됩니다. 권한 정책은 다른 어떤 IAM 엔터티에도 연결할 수 없습니다.

서비스 연결 역할을 지원하는 기타 서비스에 대한 자세한 내용은 [IAM으로 작업하는AWS 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)을(를) 참조하고 **서비스 연결 역할** 열에 **예**가 있는 서비스를 찾아보세요. 해당 서비스에 대한 서비스 연결 역할 설명서를 보려면 **예** 링크를 선택합니다.

## Image Builder에 대한 서비스 연결 역할 권한
<a name="image-builder-slr-permissions"></a>

Image Builder는 **AWSServiceRoleForImageBuilder** 서비스 연결 역할을 사용하여 EC2 Image Builder가 사용자를 대신하여 AWS 리소스에 액세스할 수 있도록 허용합니다. 서비스 연결 역할은 *imagebuilder.amazonaws.com* 서비스를 신뢰하여 역할을 맡습니다.

이 서비스 연결 역할은 수동으로 생성할 필요가 없습니다. AWS 관리 콘솔 AWS CLI, 또는 AWS API에서 첫 번째 Image Builder 이미지를 생성하면 Image Builder가 서비스 연결 역할을 생성합니다.

다음 작업을 수행하면 새 이미지가 생성됩니다.
+ Image Builder 콘솔에서 파이프라인 마법사를 실행하여 사용자 지정 이미지를 생성합니다.
+ 다음 API 작업 중 하나 또는 해당 AWS CLI 명령을 사용합니다.
  + **[CreateImage](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateImage.html)** API 작업(**[create-image](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-image.html)**의 AWS CLI).
  + **[ImportVmImage](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_ImportVmImage.html)** API 작업(**[import-vm-image](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/import-vm-image.html)**의 AWS CLI).
  + **[StartImagePipelineExecution](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_StartImagePipelineExecution.html)** API 작업(**[start-image-pipeline-execution](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/start-image-pipeline-execution.html)**의 AWS CLI).

**중요**  
서비스 연결 역할이 계정에서 삭제된 경우 동일한 프로세스를 사용하여 다시 생성할 수 있습니다. 첫 번째 EC2 Image Builder 리소스를 생성하면 Image Builder가 서비스 연결 역할을 다시 생성합니다.

**AWSServiceRoleForImageBuilder**에 대한 권한을 보려면 [AWSServiceRoleForImageBuilder 정책](security-iam-awsmanpol.md#sec-iam-manpol-AWSServiceRoleForImageBuilder) 페이지를 참조하세요. 서비스 연결 역할에 대한 권한 구성에 대해 자세히 알아보려면 *IAM 사용자 설명서*의 [서비스 연결 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions) 권한을 참조하세요.

## 계정에서 Image Builder 서비스 연결 역할 제거
<a name="image-builder-slr-deleting"></a>

IAM 콘솔, AWS CLI또는 AWS API를 사용하여 계정에서 Image Builder의 서비스 연결 역할을 수동으로 제거할 수 있습니다. 하지만 이 작업을 수행하기 전에 해당 리소스를 참조하는 Image Builder 리소스가 활성화되어 있지 않은지 확인해야 합니다.

**참고**  
리소스를 삭제하려 할 때 Image Builder 서비스가 역할을 사용 중이면 삭제에 실패할 수 있습니다. 이 문제가 발생하면 몇 분 기다렸다가 작업을 다시 시도하세요.

**`AWSServiceRoleForImageBuilder` 역할이 사용하는 Image Builder 리소스 정리**

1. 시작하기 전에 실행 중인 파이프라인 빌드가 없는지 확인하세요. 실행 중인 빌드를 취소하려면 AWS CLI의 `cancel-image-creation` 명령을 사용합니다.

   ```
   aws imagebuilder cancel-image-creation --image-build-version-arn arn:aws:imagebuilder:us-east-1:123456789012:image-pipeline/sample-pipeline
   ```

1. 수동 빌드 프로세스를 사용하도록 모든 파이프라인 일정을 변경하거나 다시 사용하지 않으려면 삭제하세요. 사용자 삭제에 대한 자세한 내용은 [오래되거나 사용되지 않는 Image Builder 리소스 삭제](delete-resources.md) 섹션을 참조하세요.

**IAM을 사용하여 서비스 연결 역할을 삭제**  
IAM 콘솔, AWS CLI또는 AWS API를 사용하여 계정에서 `AWSServiceRoleForImageBuilder` 역할을 삭제할 수 있습니다. 자세한 내용은 [IAM 사용자 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)의 * 서비스 연결 역할 삭제* 섹션을 참조하세요.

## Image Builder 서비스 연결 역할이 지원되는 리전
<a name="image-builder-slr-regions"></a>

Image Builder는 서비스를 사용할 수 있는 모든 AWS 리전에서 서비스 연결 역할 사용을 지원합니다. 지원되는 AWS 리전 목록은 섹션을 참조하세요[AWS 리전 및 엔드포인트](what-is-image-builder.md#image-builder-regions).

# Image Builder의 IAM 문제 해결
<a name="security_iam_troubleshoot"></a>

**Topics**
+ [Image Builder에서 작업을 수행할 권한이 없음](#security_iam_troubleshoot-no-permissions)
+ [iam:PassRole을 수행하도록 인증되지 않음](#security_iam_troubleshoot-passrole)
+ [내 외부의 사람이 내 Image Builder 리소스 AWS 계정 에 액세스하도록 허용하고 싶습니다.](#security_iam_troubleshoot-cross-account-access)

## Image Builder에서 작업을 수행할 권한이 없음
<a name="security_iam_troubleshoot-no-permissions"></a>

작업을 수행할 권한이 없다는 오류가 표시되면 작업을 수행할 수 있도록 정책을 업데이트해야 합니다.

다음의 예제 오류는 `mateojackson` IAM 사용자가 콘솔을 사용하여 가상 `my-example-widget` 리소스에 대한 세부 정보를 보려고 하지만 가상 `imagebuilder:GetWidget` 권한이 없을 때 발생합니다.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: imagebuilder:GetWidget on resource: my-example-widget
```

이 경우, `imagebuilder:GetWidget` 작업을 사용하여 `my-example-widget` 리소스에 액세스할 수 있도록 `mateojackson` 사용자 정책을 업데이트해야 합니다.

도움이 필요한 경우 AWS 관리자에게 문의하세요. 관리자는 로그인 자격 증명을 제공한 사람입니다.

## iam:PassRole을 수행하도록 인증되지 않음
<a name="security_iam_troubleshoot-passrole"></a>

`iam:PassRole` 작업을 수행할 수 있는 권한이 없다는 오류가 수신되면 Image Builder에 역할을 전달할 수 있도록 정책을 업데이트해야 합니다.

일부 AWS 서비스 에서는 새 서비스 역할 또는 서비스 연결 역할을 생성하는 대신 기존 역할을 해당 서비스에 전달할 수 있습니다. 이렇게 하려면 역할을 서비스에 전달할 권한이 있어야 합니다.

다음 예시 오류는 `marymajor`(이)라는 IAM 사용자가 콘솔을 사용하여 Image Builder에서 작업을 수행하려고 하는 경우에 발생합니다. 하지만 작업을 수행하려면 서비스 역할이 부여한 권한이 서비스에 있어야 합니다. Mary는 서비스에 역할을 전달할 권한이 없습니다.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

이 경우, Mary가 `iam:PassRole`작업을 수행할 수 있도록 Mary의 정책을 업데이트해야 합니다.

도움이 필요한 경우 AWS 관리자에게 문의하세요. 관리자는 로그인 자격 증명을 제공한 사람입니다.

## 내 외부의 사람이 내 Image Builder 리소스 AWS 계정 에 액세스하도록 허용하고 싶습니다.
<a name="security_iam_troubleshoot-cross-account-access"></a>

다른 계정의 사용자 또는 조직 외부의 사람이 리소스에 액세스할 때 사용할 수 있는 역할을 생성할 수 있습니다. 역할을 수임할 신뢰할 수 있는 사람을 지정할 수 있습니다. 리소스 기반 정책 또는 액세스 제어 목록(ACL)을 지원하는 서비스의 경우, 이러한 정책을 사용하여 다른 사람에게 리소스에 대한 액세스 권한을 부여할 수 있습니다.

자세히 알아보려면 다음을 참조합니다.
+ Image Builder에서 이러한 기능을 지원하는지 여부를 알아보려면 [Image Builder가 IAM 정책 및 역할을 사용하는 방법](security_iam_service-with-iam.md)(을)를 참조합니다.
+ 소유 AWS 계정 한의 리소스에 대한 액세스 권한을 제공하는 방법을 알아보려면 [IAM 사용 설명서의 소유한 다른의 IAM 사용자에게 액세스 권한 제공을 참조 AWS 계정 하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html). ** 
+ 타사에 리소스에 대한 액세스 권한을 제공하는 방법을 알아보려면 *IAM 사용 설명서*의 [타사가 AWS 계정 소유한에 대한 액세스 권한 제공을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) AWS 계정참조하세요.
+ ID 페더레이션을 통해 액세스 권한을 제공하는 방법을 알아보려면 *IAM 사용 설명서*의 [외부에서 인증된 사용자에게 액세스 권한 제공(ID 페더레이션)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)을 참조하세요.
+ 크로스 계정 액세스에 대한 역할과 리소스 기반 정책 사용의 차이점을 알아보려면 *IAM 사용 설명서*의 [IAM의 크로스 계정 리소스 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)를 참조하세요.

# Image Builder에 대한 규정 준수 검증
<a name="compliance"></a>

EC2 Image Builder는 규정 AWS 준수 프로그램의 범위에 속하지 않습니다.

 AWS 서비스 가 특정 규정 준수 프로그램의 범위 내에 있는지 알아보려면 [AWS 서비스 규정 준수 프로그램 제공 범위 내](https://aws.amazon.com/compliance/services-in-scope/)를 참조하고 관심 있는 규정 준수 프로그램을 선택합니다. 일반 정보는 [AWS 규정 준수 프로그램](https://aws.amazon.com/compliance/programs/).

를 사용하여 타사 감사 보고서를 다운로드할 수 있습니다 AWS Artifact. 자세한 내용은 [Downloading Reports inDownloading AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)을 참조하세요.

사용 시 규정 준수 책임은 데이터의 민감도, 회사의 규정 준수 목표 및 관련 법률과 규정에 따라 AWS 서비스 결정됩니다. 사용 시 규정 준수 책임에 대한 자세한 내용은 [AWS 보안 설명서를](https://docs.aws.amazon.com/security/) AWS 서비스참조하세요.

Image Builder 이미지에의 규정 준수 제품 AWS Marketplace 또는 AWS Task Orchestrator and Executor (AWSTOE)의 구성 요소를 통합하여 이미지가 규정을 준수하는지 확인할 수 있습니다. 자세한 내용은 [Image Builder 이미지를 위한 규정 준수 제품](integ-compliance-products.md) 단원을 참조하십시오.

# Image Builder의 데이터 중복성 및 복원력
<a name="disaster-recovery-resiliency"></a>

 AWS 글로벌 인프라는 AWS 리전 및 가용 영역을 중심으로 구축됩니다. AWS 리전은 물리적으로 분리되고 격리된 여러 가용 영역을 제공하며,이 가용 영역은 지연 시간이 짧고 처리량이 높으며 중복성이 높은 네트워킹과 연결됩니다. 가용 영역을 사용하면 중단 없이 영역 간에 자동으로 장애 극복 조치가 이루어지는 애플리케이션 및 데이터베이스를 설계하고 운영할 수 있습니다. 가용 영역은 기존의 단일 또는 다중 데이터 센터 인프라보다 가용성, 내결함성, 확장성이 뛰어납니다.

EC2 Image Builder 서비스를 사용하면 한 리전에 빌드된 이미지를 다른 리전과 함께 배포하여 AMI에 대한 다중 리전 복원력을 제공할 수 있습니다. 이미지 파이프라인, 레시피 또는 구성 요소를 ‘백업’하는 메커니즘은 없습니다. 레시피 및 구성 요소 문서를 Image Builder 서비스 외부(예: Amazon S3 버킷) 에 저장할 수 있습니다.

EC2 Image Builder는 고가용성(HA)을 위해 구성될 수 없습니다. 이미지를 여러 리전에 배포하여 이미지의 가용성을 높일 수 있습니다.

 AWS 리전 및 가용 영역에 대한 자세한 내용은 [AWS 글로벌 인프라를](https://aws.amazon.com/about-aws/global-infrastructure/) 참조하세요.

# Image Builder의 인프라 보안
<a name="infrastructure-security"></a>

 AWS 글로벌 네트워크는 EC2 Image Builder와 같은 서비스에 대한 보안 기능을 제공하고 네트워크 액세스를 제어합니다. AWS (이)가 해당 서비스에 제공하는 인프라 보안에 대한 자세한 내용은 * AWS 보안에 대한 소개* 백서에 있는 [인프라 보안](https://docs.aws.amazon.com/whitepapers/latest/introduction-aws-security/infrastructure-security.html) 섹션을 참조합니다.

Image Builder API 작업에 대한 요청을 AWS 글로벌 네트워크를 통해 보내려면 클라이언트 소프트웨어가 다음 보안 지침을 준수해야 합니다.
+ Image Builder API 작업에 대한 요청을 보내려면 클라이언트 소프트웨어에서 지원되는 버전의 전송 계층 보안(TLS)을 사용해야 합니다.
**참고**  
AWS 는 TLS 버전 1.0 및 1.1에 대한 지원을 단계적으로 중단합니다. 계속 연결할 수 있도록 클라이언트 소프트웨어가 TLS 버전 1.2 이상을 사용하도록 업데이트하는 것이 좋습니다. 자세한 내용은 [AWS 보안 블로그 게시물](https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/)을 참조하세요.
+ 클라이언트 소프트웨어는 Ephemeral Diffie-Hellman(DHE) 또는 Elliptic Curve Ephemeral Diffie-Hellman(ECDHE)와 같은 전달 완전 보안(PFS)이 포함된 암호화 스위트를 지원해야 합니다. Java 7 이상과 같은 최신 시스템은 대부분 이러한 모드를 지원합니다.
+ 액세스 키 ID와 AWS Identity and Access Management (IAM) 보안 주체와 연결된 보안 액세스 키를 사용하여 API 요청에 서명해야 합니다. 또는 [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html)(AWS STS)을 사용하여 요청에 따라 임시 보안 인증을 생성할 수 있습니다.

또한 Image Builder가 이미지를 빌드하고 테스트하는 데 사용하는 EC2 인스턴스는 AWS Systems Manager에 액세스할 수 있어야 합니다.

# Image Builder 이미지에 대한 패치 관리
<a name="security-patch-management"></a>

AWS 는 다음 운영 체제에 적용되는 최신 업데이트 및 보안 패치가 있는 업데이트된 관리형 AMIs를 매월 제공합니다. 이러한 AMI를 사용자 지정의 기본 이미지로 사용할 수 있습니다. 자세한 내용은 [지원되는 운영 체제](what-is-image-builder.md#image-builder-os) 단원을 참조하십시오.
+ Amazon Linux 2, AL2023, Red Hat Enterprise Linux (RHEL), CentOS, Ubuntu, SUSE Linux Enterprise Server를 포함한 Linux 배포판
+ Windows Server 2016 이상
+ macOS 10.14.x 이상

사용자 지정 이미지를 생성한 후 [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/)에 따라 Amazon EC2 시스템 패치를 지정해야 합니다. 애플리케이션 워크로드의 EC2 인스턴스를 쉽게 교체할 수 있는 경우 기본 AMI를 업데이트하고 이 이미지를 기반으로 모든 컴퓨팅 노드를 재배포하는 것이 가장 효율적일 수 있습니다.

**참고**  
macOS 패치의 경우 기본 이미지에 최신 관리형 AMI를 사용하는 레시피의 새 버전을 생성한 다음 레시피 및 기타 이미지 빌드 리소스에서 업데이트된 사용자 지정 이미지를 빌드하는 것이 좋습니다. Mac 인스턴스를 쉽게 교체할 수 없는 경우 자세한 내용은 *Amazon EC2 사용 설명서*의 [Mac 인스턴스에서 운영 체제 및 소프트웨어 업데이트](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mac-instance-updates.html) 페이지를 참조하세요.

Image Builder AMI를 최신 상태로 유지할 수 있는 두 가지 방법은 다음과 같습니다.
+ **AWS에서 제공되는 패치 구성 요소** — EC2 Image Builder는 보류 중인 모든 운영 체제 업데이트를 설치하는 다음 빌드 구성 요소를 제공합니다.
  + `update-linux`
  + `update-windows`

  이러한 구성 요소는 `UpdateOS` 작업 모듈을 사용합니다. 자세한 내용은 [UpdateOS](toe-action-modules.md#action-modules-updateos) 단원을 참조하십시오. AWS에 제공된 구성 요소 목록에서 구성 요소를 선택하여 이미지 빌드 파이프라인에 구성 요소를 추가할 수 있습니다.
+ **패치 작업이 포함된 사용자 지정 빌드 구성 요소** - 지원되는 AMI의 운영 체제에 패치를 선택적으로 설치하거나 업데이트하려면 Image Builder 구성 요소를 작성하여 필요한 패치를 설치할 수 있습니다. 사용자 지정 구성 요소는 셸 스크립트(Bash 또는 PowerShell)를 사용하여 패치를 설치하거나 `UpdateOS` 작업 모듈을 사용하여 설치 또는 제외할 패치를 지정할 수 있습니다. 자세한 내용은 [AWSTOE 구성 요소 관리자가 지원하는 작업 모듈](toe-action-modules.md) 단원을 참조하십시오.

  `UpdateOS` 작업 모듈을 사용하는 구성 요소(Linux 및 Windows만 해당. `UpdateOS` 작업 모듈은 macOS에서 지원되지 않습니다.)

  ```
  schemaVersion: 1.0
  phases:
    - name: build
  	steps:
  	  - name: UpdateOS
  		action: UpdateOS
  ```

  Bash를 사용하여 yum 업데이트를 설치하는 구성 요소

  ```
  schemaVersion: 1.0
  phases:
    - name: build
  	steps:
  	  - name: InstallYumUpdates
  		action: ExecuteBash
  		inputs:
  		  commands:
  			- sudo yum update -y
  ```

# Image Builder의 보안 모범 사례
<a name="security-best-practices"></a>

EC2 Image Builder는 자체 보안 정책을 개발하고 구현할 때 고려해야 할 여러 보안 기능을 제공합니다. 다음 모범 사례는 일반적인 지침이며 완벽한 보안 솔루션을 나타내지는 않습니다. 이러한 모범 사례는 환경에 적절하지 않거나 충분하지 않을 수 있으므로 참고용으로만 사용합니다.
+ Image Builder 레시피에는 지나치게 허용적인 보안 그룹을 사용하지 않습니다.
+ 신뢰할 수 없는 계정에 있는 이미지는 공유하지 않습니다.
+ 비공개 또는 민감한 데이터가 포함된 이미지는 공개하지 않습니다.
+ 이미지 빌드 중에 사용 가능한 모든 Windows 또는 Linux 보안 패치를 적용합니다.
+ 관리형 AMI 업데이트를 macOS 레시피에 주기적으로 적용하고 새 이미지를 생성하여 최신 보안 패치가 있는 인스턴스를 시작합니다.

이미지를 테스트하여 보안 상태 및 해당 보안 규정 준수 수준을 검증하는 것이 좋습니다. [Amazon Inspector](https://aws.amazon.com/inspector/)와 같은 솔루션은 이미지의 보안 및 규정 준수 상태를 검증하는 데 도움이 될 수 있습니다.

**Image Builder 파이프라인용 IMDSv2**  
Image Builder 파이프라인이 실행되면 Image Builder에서 이미지를 빌드하고 테스트하는 데 사용하는 EC2 인스턴스를 시작하기 위한 HTTP 요청을 보냅니다. 파이프라인이 시작 요청에 사용하는 IMDS 버전을 구성하려면 Image Builder 인프라 구성 인스턴스 메타데이터 설정에서 `httpTokens` 파라미터를 설정합니다.

**참고**  
Image Builder가 파이프라인 빌드에서 시작하는 모든 EC2 인스턴스가 IMDSv2를 사용하도록 구성하여 인스턴스 메타데이터 검색 요청에 서명된 토큰 헤더가 필요하도록 하는 것이 좋습니다.

Image Builder 인프라 구성에 대한 자세한 내용은 [Image Builder 인프라 구성 관리](manage-infra-config.md)(을)를 참조합니다. Linux 이미지용 EC2 인스턴스 메타데이터 옵션에 대한 자세한 내용은 Amazon EC2 사용 설명서의 [인스턴스 메타데이터 옵션 구성하기](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)를 참조합니다. Windows 이미지의 경우 Amazon EC2 사용 설명서의 [인스턴스 메타데이터 옵션 구성하기](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)를 참조합니다.

## 빌드 후 정리 필요
<a name="post-build-cleanup"></a>

Image Builder가 사용자 지정 이미지의 모든 빌드 단계를 완료한 후 Image Builder는 테스트 및 이미지 생성을 위해 빌드 인스턴스를 준비합니다. 스냅샷을 생성하기 위해 빌드 인스턴스를 종료하기 전에 Image Builder는 이미지의 보안을 보장하기 위해 다음과 같은 정리 작업을 수행합니다.

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

Image Builder 파이프라인은 최종 이미지가 보안 모범 사례를 따르는지 확인하고 스냅샷으로 전달해서는 안 되는 빌드 아티팩트 또는 설정을 제거하는 데 도움이 되는 정리 스크립트를 실행합니다. 하지만 스크립트의 일부 섹션을 건너뛰거나 사용자 데이터를 완전히 오버라이드할 수 있습니다. 따라서 Image Builder 파이프라인에서 생성된 이미지가 특정 규제 기준을 반드시 준수하는 것은 아닙니다.

파이프라인이 빌드 및 테스트 단계를 완료하면 Image Builder는 출력 이미지를 생성하기 직전에 다음 정리 스크립트를 자동으로 실행합니다.

**중요**  
레시피의 **사용자 데이터**를 오버라이드하면 스크립트가 실행되지 않습니다. 이 경우 `perform_cleanup`(이)라는 빈 파일을 생성하는 사용자 데이터에 명령을 포함해야 합니다. Image Builder는 이 파일을 탐지하고 새 이미지를 생성하기 전에 정리 스크립트를 실행합니다.

```
#!/bin/bash
if [[ ! -f {{workingDirectory}}/perform_cleanup ]]; then
    echo "Skipping cleanup"
    exit 0
else
    sudo rm -f {{workingDirectory}}/perform_cleanup
fi

function cleanup() {
    FILES=("$@")
    for FILE in "${FILES[@]}"; do
        if [[ -f "$FILE" ]]; then
            echo "Deleting $FILE";
            sudo shred -zuf $FILE;
        fi;
        if [[ -f $FILE ]]; then
            echo "Failed to delete '$FILE'. Failing."
            exit 1
        fi;
    done
};


# Clean up for cloud-init files
CLOUD_INIT_FILES=(
    "/etc/sudoers.d/90-cloud-init-users"
    "/etc/locale.conf"
    "/var/log/cloud-init.log"
    "/var/log/cloud-init-output.log"
)
if [[ -f {{workingDirectory}}/skip_cleanup_cloudinit_files ]]; then
    echo "Skipping cleanup of cloud init files"
else
    echo "Cleaning up cloud init files"
    cleanup "${CLOUD_INIT_FILES[@]}"
    if [[ $( sudo find /var/lib/cloud -type f | sudo wc -l ) -gt 0 ]]; then
        echo "Deleting files within /var/lib/cloud/*"
        sudo find /var/lib/cloud -type f -exec shred -zuf {} \;
    fi;

    if [[ $( sudo ls /var/lib/cloud | sudo wc -l ) -gt 0 ]]; then
        echo "Deleting /var/lib/cloud/*"
        sudo rm -rf /var/lib/cloud/* || true
    fi;
fi;


# Clean up for temporary instance files
INSTANCE_FILES=(
    "/etc/.updated"
    "/etc/aliases.db"
    "/etc/hostname"
    "/var/lib/misc/postfix.aliasesdb-stamp"
    "/var/lib/postfix/master.lock"
    "/var/spool/postfix/pid/master.pid"
    "/var/.updated"
    "/var/cache/yum/x86_64/2/.gpgkeyschecked.yum"
)
if [[ -f {{workingDirectory}}/skip_cleanup_instance_files ]]; then
    echo "Skipping cleanup of instance files"
else
    echo "Cleaning up instance files"
    cleanup "${INSTANCE_FILES[@]}"
fi;


# Clean up for ssh files
SSH_FILES=(
    "/etc/ssh/ssh_host_rsa_key"
    "/etc/ssh/ssh_host_rsa_key.pub"
    "/etc/ssh/ssh_host_ecdsa_key"
    "/etc/ssh/ssh_host_ecdsa_key.pub"
    "/etc/ssh/ssh_host_ed25519_key"
    "/etc/ssh/ssh_host_ed25519_key.pub"
    "/root/.ssh/authorized_keys"
)
if [[ -f {{workingDirectory}}/skip_cleanup_ssh_files ]]; then
    echo "Skipping cleanup of ssh files"
else
    echo "Cleaning up ssh files"
    cleanup "${SSH_FILES[@]}"
    USERS=$(ls /home/)
    for user in $USERS; do
        echo Deleting /home/"$user"/.ssh/authorized_keys;
        sudo find /home/"$user"/.ssh/authorized_keys -type f -exec shred -zuf {} \;
    done
    for user in $USERS; do
        if [[ -f /home/"$user"/.ssh/authorized_keys ]]; then
            echo Failed to delete /home/"$user"/.ssh/authorized_keys;
            exit 1
        fi;
    done;
fi;


# Clean up for instance log files
INSTANCE_LOG_FILES=(
    "/var/log/audit/audit.log"
    "/var/log/boot.log"
    "/var/log/dmesg"
    "/var/log/cron"
)
if [[ -f {{workingDirectory}}/skip_cleanup_instance_log_files ]]; then
    echo "Skipping cleanup of instance log files"
else
    echo "Cleaning up instance log files"
    cleanup "${INSTANCE_LOG_FILES[@]}"
fi;

# Clean up for TOE files
if [[ -f {{workingDirectory}}/skip_cleanup_toe_files ]]; then
    echo "Skipping cleanup of TOE files"
else
    echo "Cleaning TOE files"
    if [[ $( sudo find {{workingDirectory}}/TOE_* -type f | sudo wc -l) -gt 0 ]]; then
        echo "Deleting files within {{workingDirectory}}/TOE_*"
        sudo find {{workingDirectory}}/TOE_* -type f -exec shred -zuf {} \;
    fi
    if [[ $( sudo find {{workingDirectory}}/TOE_* -type f | sudo wc -l) -gt 0 ]]; then
        echo "Failed to delete {{workingDirectory}}/TOE_*"
        exit 1
    fi
    if [[ $( sudo find {{workingDirectory}}/TOE_* -type d | sudo wc -l) -gt 0 ]]; then
        echo "Deleting {{workingDirectory}}/TOE_*"
        sudo rm -rf {{workingDirectory}}/TOE_*
    fi
    if [[ $( sudo find {{workingDirectory}}/TOE_* -type d | sudo wc -l) -gt 0 ]]; then
        echo "Failed to delete {{workingDirectory}}/TOE_*"
        exit 1
    fi
fi

# Clean up for ssm log files
if [[ -f {{workingDirectory}}/skip_cleanup_ssm_log_files ]]; then
    echo "Skipping cleanup of ssm log files"
else
    echo "Cleaning up ssm log files"
    if [[ $( sudo find /var/log/amazon/ssm -type f | sudo wc -l) -gt 0 ]]; then
        echo "Deleting files within /var/log/amazon/ssm/*"
        sudo find /var/log/amazon/ssm -type f -exec shred -zuf {} \;
    fi
    if [[ $( sudo find /var/log/amazon/ssm -type f | sudo wc -l) -gt 0 ]]; then
        echo "Failed to delete /var/log/amazon/ssm"
        exit 1
    fi
    if [[ -d "/var/log/amazon/ssm" ]]; then
        echo "Deleting /var/log/amazon/ssm/*"
        sudo rm -rf /var/log/amazon/ssm
    fi
    if [[ -d "/var/log/amazon/ssm" ]]; then
        echo "Failed to delete /var/log/amazon/ssm"
        exit 1
    fi
fi


if [[ $( sudo find /var/log/sa/sa* -type f | sudo wc -l ) -gt 0 ]]; then
    echo "Deleting /var/log/sa/sa*"
    sudo shred -zuf /var/log/sa/sa*
fi
if [[ $( sudo find /var/log/sa/sa* -type f | sudo wc -l ) -gt 0 ]]; then
    echo "Failed to delete /var/log/sa/sa*"
    exit 1
fi

if [[ $( sudo find /var/lib/dhclient/dhclient*.lease -type f | sudo wc -l ) -gt 0 ]]; then
        echo "Deleting /var/lib/dhclient/dhclient*.lease"
        sudo shred -zuf /var/lib/dhclient/dhclient*.lease
fi
if [[ $( sudo find /var/lib/dhclient/dhclient*.lease -type f | sudo wc -l ) -gt 0 ]]; then
        echo "Failed to delete /var/lib/dhclient/dhclient*.lease"
        exit 1
fi

if [[ $( sudo find /var/tmp -type f | sudo wc -l) -gt 0 ]]; then
        echo "Deleting files within /var/tmp/*"
        sudo find /var/tmp -type f -exec shred -zuf {} \;
fi
if [[ $( sudo find /var/tmp -type f | sudo wc -l) -gt 0 ]]; then
        echo "Failed to delete /var/tmp"
        exit 1
fi
if [[ $( sudo ls /var/tmp | sudo wc -l ) -gt 0 ]]; then
        echo "Deleting /var/tmp/*"
        sudo rm -rf /var/tmp/*
fi

# Shredding is not guaranteed to work well on rolling logs

if [[ -f "/var/lib/rsyslog/imjournal.state" ]]; then
        echo "Deleting /var/lib/rsyslog/imjournal.state"
        sudo shred -zuf /var/lib/rsyslog/imjournal.state
        sudo rm -f /var/lib/rsyslog/imjournal.state
fi

if [[ $( sudo ls /var/log/journal/ | sudo wc -l ) -gt 0 ]]; then
        echo "Deleting /var/log/journal/*"
        sudo find /var/log/journal/ -type f -exec shred -zuf {} \;
        sudo rm -rf /var/log/journal/*
fi

sudo touch /etc/machine-id
```

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

Image Builder 파이프라인은 Windows 이미지를 사용자 지정한 후 Microsoft [Sysprep](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep--generalize--a-windows-installation?view=windows-11) 유틸리티를 실행합니다. 이러한 작업은 [AWS 이미지 강화 및 정리 모범 사례를](https://aws.amazon.com/articles/public-ami-publishing-hardening-and-clean-up-requirements/) 따릅니다.

------
#### [ macOS ]

Image Builder 파이프라인은 최종 이미지가 보안 모범 사례를 따르는지 확인하고 스냅샷으로 전달해서는 안 되는 빌드 아티팩트 또는 설정을 제거하는 데 도움이 되는 정리 스크립트를 실행합니다. 하지만 스크립트의 일부 섹션을 건너뛰거나 사용자 데이터를 완전히 오버라이드할 수 있습니다. 따라서 Image Builder 파이프라인에서 생성된 이미지가 특정 규제 기준을 반드시 준수하는 것은 아닙니다.

파이프라인이 빌드 및 테스트 단계를 완료하면 Image Builder는 출력 이미지를 생성하기 직전에 다음 정리 스크립트를 자동으로 실행합니다.

**중요**  
레시피의 **사용자 데이터**를 오버라이드하면 스크립트가 실행되지 않습니다. 이 경우 `perform_cleanup`(이)라는 빈 파일을 생성하는 사용자 데이터에 명령을 포함해야 합니다. Image Builder는 이 파일을 탐지하고 새 이미지를 생성하기 전에 정리 스크립트를 실행합니다.

```
#!/bin/bash
if [[ ! -f {{workingDirectory}}/perform_cleanup ]]; then
  echo "Skipping cleanup"
  exit 0
else
  sudo rm -f {{workingDirectory}}/perform_cleanup
fi

function cleanup() {
  FILES=("$@")
  for FILE in "${FILES[@]}"; do
      if [[ -f "$FILE" ]]; then
          echo "Deleting $FILE";
          sudo rm -f $FILE;
      fi;
      if [[ -f $FILE ]]; then
          echo "Failed to delete '$FILE'. Failing."
          exit 1
      fi;
  done
};

# Clean up for cloud-init files
CLOUD_INIT_FILES=(
  "/etc/sudoers.d/90-cloud-init-users"
  "/etc/locale.conf"
  "/var/log/cloud-init.log"
  "/var/log/cloud-init-output.log"
)
if [[ -f {{workingDirectory}}/skip_cleanup_cloudinit_files ]]; then
  echo "Skipping cleanup of cloud init files"
else
  echo "Cleaning up cloud init files"
  cleanup "${CLOUD_INIT_FILES[@]}"
  if [[ $( sudo find /var/lib/cloud -type f | sudo wc -l ) -gt 0 ]]; then
      echo "Deleting files within /var/lib/cloud/*"
      sudo find /var/lib/cloud -type f -exec rm -f {} \;
  fi;

  if [[ $( sudo ls /var/lib/cloud | sudo wc -l ) -gt 0 ]]; then
      echo "Deleting /var/lib/cloud/*"
      sudo rm -rf /var/lib/cloud/* || true
  fi;
fi;


# Clean up for temporary instance files
INSTANCE_FILES=(
  "/etc/.updated"
  "/etc/aliases.db"
  "/etc/hostname"
  "/var/lib/misc/postfix.aliasesdb-stamp"
  "/var/lib/postfix/master.lock"
  "/var/spool/postfix/pid/master.pid"
  "/var/.updated"
  "/var/cache/yum/x86_64/2/.gpgkeyschecked.yum"
)
if [[ -f {{workingDirectory}}/skip_cleanup_instance_files ]]; then
  echo "Skipping cleanup of instance files"
else
  echo "Cleaning up instance files"
  cleanup "${INSTANCE_FILES[@]}"
fi;


# Clean up for ssh files
SSH_FILES=(
  "/etc/ssh/ssh_host_rsa_key"
  "/etc/ssh/ssh_host_rsa_key.pub"
  "/etc/ssh/ssh_host_ecdsa_key"
  "/etc/ssh/ssh_host_ecdsa_key.pub"
  "/etc/ssh/ssh_host_ed25519_key"
  "/etc/ssh/ssh_host_ed25519_key.pub"
  "/root/.ssh/authorized_keys"
)
if [[ -f {{workingDirectory}}/skip_cleanup_ssh_files ]]; then
  echo "Skipping cleanup of ssh files"
else
  echo "Cleaning up ssh files"
  cleanup "${SSH_FILES[@]}"
  USERS=$(ls /home/)
  for user in $USERS; do
      echo Deleting /home/"$user"/.ssh/authorized_keys;
      sudo find /home/"$user"/.ssh/authorized_keys -type f -exec rm -f {} \;
  done
  for user in $USERS; do
      if [[ -f /home/"$user"/.ssh/authorized_keys ]]; then
          echo Failed to delete /home/"$user"/.ssh/authorized_keys;
          exit 1
      fi;
  done;
fi;


# Clean up for instance log files
INSTANCE_LOG_FILES=(
  "/var/log/audit/audit.log"
  "/var/log/boot.log"
  "/var/log/dmesg"
  "/var/log/cron"
  "/var/log/amazon/ec2/ec2-macos-init.log"
  "/var/log/amazon/ec2/ena-ethernet.log"
  "/var/log/amazon/ec2/system-monitoring.log"
)
if [[ -f {{workingDirectory}}/skip_cleanup_instance_log_files ]]; then
  echo "Skipping cleanup of instance log files"
else
  echo "Cleaning up instance log files"
  cleanup "${INSTANCE_LOG_FILES[@]}"
fi;

# Clean up for TOE files
if [[ -f {{workingDirectory}}/skip_cleanup_toe_files ]]; then
  echo "Skipping cleanup of TOE files"
else
  echo "Cleaning TOE files"
  if [[ $( sudo find {{workingDirectory}}/TOE_* -type f | sudo wc -l) -gt 0 ]]; then
      echo "Deleting files within {{workingDirectory}}/TOE_*"
      sudo find {{workingDirectory}}/TOE_* -type f -exec rm -f {} \;
  fi
  if [[ $( sudo find {{workingDirectory}}/TOE_* -type f | sudo wc -l) -gt 0 ]]; then
      echo "Failed to delete {{workingDirectory}}/TOE_*"
      exit 1
  fi
  if [[ $( sudo find {{workingDirectory}}/TOE_* -type d | sudo wc -l) -gt 0 ]]; then
      echo "Deleting {{workingDirectory}}/TOE_*"
      sudo rm -rf {{workingDirectory}}/TOE_*
  fi
  if [[ $( sudo find {{workingDirectory}}/TOE_* -type d | sudo wc -l) -gt 0 ]]; then
      echo "Failed to delete {{workingDirectory}}/TOE_*"
      exit 1
  fi
fi

# Clean up for ssm log files
if [[ -f {{workingDirectory}}/skip_cleanup_ssm_log_files ]]; then
  echo "Skipping cleanup of ssm log files"
else
  echo "Cleaning up ssm log files"
  if [[ $( sudo find /var/log/amazon/ssm -type f | sudo wc -l) -gt 0 ]]; then
      echo "Deleting files within /var/log/amazon/ssm/*"
      sudo find /var/log/amazon/ssm -type f -exec rm -f {} \;
  fi
  if [[ $( sudo find /var/log/amazon/ssm -type f | sudo wc -l) -gt 0 ]]; then
      echo "Failed to delete /var/log/amazon/ssm"
      exit 1
  fi
  if [[ -d "/var/log/amazon/ssm" ]]; then
      echo "Deleting /var/log/amazon/ssm/*"
      sudo rm -rf /var/log/amazon/ssm
  fi
  if [[ -d "/var/log/amazon/ssm" ]]; then
      echo "Failed to delete /var/log/amazon/ssm"
      exit 1
  fi
fi


if [[ $( sudo find /var/log/sa/sa* -type f | sudo wc -l ) -gt 0 ]]; then
  echo "Deleting /var/log/sa/sa*"
  sudo rm -f /var/log/sa/sa*
fi
if [[ $( sudo find /var/log/sa/sa* -type f | sudo wc -l ) -gt 0 ]]; then
  echo "Failed to delete /var/log/sa/sa*"
  exit 1
fi

if [[ $( sudo find /var/lib/dhclient/dhclient*.lease -type f | sudo wc -l ) -gt 0 ]]; then
      echo "Deleting /var/lib/dhclient/dhclient*.lease"
      sudo rm -f /var/lib/dhclient/dhclient*.lease
fi
if [[ $( sudo find /var/lib/dhclient/dhclient*.lease -type f | sudo wc -l ) -gt 0 ]]; then
      echo "Failed to delete /var/lib/dhclient/dhclient*.lease"
      exit 1
fi

if [[ $( sudo find /var/tmp -type f | sudo wc -l) -gt 0 ]]; then
      echo "Deleting files within /var/tmp/*"
      sudo find /var/tmp -type f -exec rm -f {} \;
fi
if [[ $( sudo find /var/tmp -type f | sudo wc -l) -gt 0 ]]; then
      echo "Failed to delete /var/tmp"
      exit 1
fi
if [[ $( sudo ls /var/tmp | sudo wc -l ) -gt 0 ]]; then
      echo "Deleting /var/tmp/*"
      sudo rm -rf /var/tmp/*
fi

# Shredding is not guaranteed to work well on rolling logs

if [[ -f "/var/lib/rsyslog/imjournal.state" ]]; then
      echo "Deleting /var/lib/rsyslog/imjournal.state"
      sudo rm -f /var/lib/rsyslog/imjournal.state
      sudo rm -f /var/lib/rsyslog/imjournal.state
fi

if [[ $( sudo ls /var/log/journal/ | sudo wc -l ) -gt 0 ]]; then
      echo "Deleting /var/log/journal/*"
      sudo find /var/log/journal/ -type f -exec rm -f {} \;
      sudo rm -rf /var/log/journal/*
fi

sudo touch /etc/machine-id
```

------

## Linux 정리 스크립트를 오버라이드합니다.
<a name="override-linux-cleanup-script"></a>

Image Builder는 기본적으로 안전한 이미지를 생성하고 보안 모범 사례를 따릅니다. 하지만 일부 고급 사용 사례에서는 내장된 정리 스크립트의 한 개 이상의 섹션을 건너뛰어야 할 수도 있습니다. 일부 정리 단계를 건너뛰어야 하는 경우 출력 AMI를 테스트하여 이미지의 보안을 확인하는 것이 좋습니다.

**중요**  
정리 스크립트의 섹션을 건너뛰면 소유자 계정 세부 정보 또는 SSH 키와 같은 민감한 정보가 최종 이미지 및 해당 이미지에서 실행되는 인스턴스에 포함될 수 있습니다. 다른 가용 영역, 리전 또는 계정에서 시작하는 데 문제가 발생할 수도 있습니다.

다음 표에는 정리 스크립트의 섹션, 해당 섹션에서 삭제된 파일 및 Image Builder에서 건너뛰어야 하는 섹션에 플래그를 지정하는 데 사용할 수 있는 파일 이름이 요약되어 있습니다. 정리 스크립트의 특정 섹션을 건너뛰려면 [CreateFile](toe-action-modules.md#action-modules-createfile) 구성 요소 작업 모듈이나 사용자 데이터의 명령(오버라이드하는 경우)을 사용하여 **건너뛰기 섹션 파일 이름** 열에 지정된 이름으로 빈 파일을 생성할 수 있습니다.

**참고**  
정리 스크립트의 한 부분을 건너뛰기 위해 생성하는 파일에는 파일 확장자가 포함되어서는 안 됩니다. 예를 들어, 스크립트의 `CLOUD_INIT_FILES` 섹션을 건너뛰고 싶지만 `skip_cleanup_cloudinit_files.txt`(이)라는 파일을 생성하면 Image Builder는 건너뛰기 파일을 인식하지 못합니다.


**Input**  

| 섹션 정리하기 | 파일 제거됨 | 섹션 파일 이름 건너뛰기 | 
| --- | --- | --- | 
| `CLOUD_INIT_FILES` | `/etc/sudoers.d/90-cloud-init-users` `/etc/locale.conf` `/var/log/cloud-init.log` `/var/log/cloud-init-output.log`  | `skip_cleanup_cloudinit_files` | 
| `INSTANCE_FILES` | `/etc/.updated` `/etc/aliases.db` `/etc/hostname` `/var/lib/misc/postfix.aliasesdb-stamp` `/var/lib/postfix/master.lock` `/var/spool/postfix/pid/master.pid` `/var/.updated` `/var/cache/yum/x86_64/2/.gpgkeyschecked.yum`  | `skip_cleanup_instance_files` | 
| `SSH_FILES` | `/etc/ssh/ssh_host_rsa_key` `/etc/ssh/ssh_host_rsa_key.pub` `/etc/ssh/ssh_host_ecdsa_key` `/etc/ssh/ssh_host_ecdsa_key.pub` `/etc/ssh/ssh_host_ed25519_key` `/etc/ssh/ssh_host_ed25519_key.pub` `/root/.ssh/authorized_keys` `/home/<all users>/.ssh/authorized_keys;`  | `skip_cleanup_ssh_files` | 
| `INSTANCE_LOG_FILES` | `/var/log/audit/audit.log` `/var/log/boot.log` `/var/log/dmesg` `/var/log/cron`  | `skip_cleanup_instance_log_files` | 
| `TOE_FILES` | `{{workingDirectory}}/TOE_*` | `skip_cleanup_toe_files` | 
| `SSM_LOG_FILES` | `/var/log/amazon/ssm/*` | `skip_cleanup_ssm_log_files` | 