

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

# Terraform 프로비저닝 엔진 설치 및 구성
<a name="install-config-engine"></a>

에서 Terraform 제품을 성공적으로 사용하려면 Terraform 제품을 관리할 계정과 동일한 계정에 Terraform 프로비저닝 엔진을 설치하고 구성해야 AWS Service Catalog합니다. 시작하려면에서 제공하는 Terraform 프로비저닝 엔진을 사용하면 Terraform 프로비저닝 엔진 AWS이 작동하는 데 필요한 코드와 인프라를 설치하고 구성할 수 있습니다 AWS Service Catalog. 이 일회성 설정은 약 30분이 소요됩니다.는 GitHub 리포지토리[에 Terraform 프로비저닝 엔진 설치 및 구성](https://github.com/aws-samples/service-catalog-engine-for-terraform-os) 지침을 AWS Service Catalog 제공합니다.

## 대기열 결정
<a name="queue-determination"></a>

프로비저닝 작업을 호출하면는 프로비저닝 엔진의 관련 대기열로 전송할 페이로드 메시지를 AWS Service Catalog 준비합니다. 대기열에 대한 ARN을 빌드하기 위해 AWS Service Catalog 는 다음과 같은 가정을 합니다.
+ 프로비저닝 엔진은 제품 소유자의 계정에 있습니다.
+ 프로비저닝 엔진은 호출이 이루어진 리전과 동일한 리전에 위치 AWS Service Catalog 합니다.
+ 프로비저닝 엔진 대기열은 아래에 설명된 문서화된 이름 지정 스키마를 따릅니다.

예를 들어 계정 1111111111에서 생성된 제품을 사용하여 계정 0000000000000`us-east-1`에서 ProvisionProduct를 호출하는 경우 올바른 SQS ARN이 라고 AWS Service Catalog 가정합니다`arn:aws:sqs:us-east-1:0000000000000:ServiceCatalogTerraformOSProvisionOperationQueue`.

`DescribeProvisioningParameters`에서 호출한 Lambda 함수에도 동일한 로직이 적용됩니다.

# Terraform 프로비저닝 엔진에 혼동된 대리자 추가
<a name="confused-deputy-TRFM-engine"></a>

## `lambda:Invoke` 작업에 대한 액세스를 제한하는 엔드포인트의 혼동된 대리자 컨텍스트 키
<a name="confused-deputy-TRFM-lambda"></a>

 AWS Service Catalog제공 엔진에서 생성한 파라미터 구문 분석기 Lambda 함수에는 AWS Service Catalog 서비스 보안 주체에게만 교차 계정 `lambda:Invoke` 권한을 부여하는 액세스 정책이 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "servicecatalog.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-1:111122223333:function:ServiceCatalogTerraformOSParameterParser"
        }
    ]
}
```

------

이는 와의 통합이 제대로 작동하는 AWS Service Catalog 데 필요한 유일한 권한이어야 합니다. 하지만 `aws:SourceAccount` [Confused Deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy) 컨텍스트 키를 사용하여 이를 더 제한할 수 있습니다. 가 이러한 대기열로 메시지를 AWS Service Catalog 보낼 때는 키를 프로비저닝 계정의 ID로 AWS Service Catalog 채웁니다. 이는 포트폴리오 공유를 통해 제품을 배포하고 특정 계정만 엔진을 사용하도록 하려는 경우에 유용합니다.

예를 들어 아래 표시된 조건을 사용하여 000000000000 및 111111111111에서 시작된 요청만 허용하도록 엔진을 제한할 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "servicecatalog.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-1:111122223333:function:ServiceCatalogTerraformOSParameterParser",
            "Condition": {
                "StringLike": {
                    "aws:SourceAccount": [
                        "000000000000",
                        "111111111111"
                    ]
                }
            }
        }
    ]
}
```

------

## `sqs:SendMessage` 작업에 대한 액세스를 제한하는 엔드포인트의 혼동된 대리자 컨텍스트 키
<a name="confused-deputy-TRFM-sqs"></a>

프로비저닝 작업은 AWS Service Catalog제공 엔진에서 생성한 Amazon SQS 대기열에 AWS Service Catalog 서비스 보안 주체에게만 교차 계정`sqs:SendMessage`(및 관련 KMS) 권한을 부여하는 액세스 정책을 적용합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Enable AWS Service Catalog to send messages to the queue",
            "Effect": "Allow",
            "Principal": {
                "Service": "servicecatalog.amazonaws.com"
            },
            "Action": "sqs:SendMessage",
            "Resource": [
                "arn:aws:sqs:us-east-1:111122223333:ServiceCatalogTerraformOSProvisionOperationQueue"
            ]
        },
        {
            "Sid": "Enable AWS Service Catalog encryption/decryption permissions when sending message to queue",
            "Effect": "Allow",
            "Principal": {
                "Service": "servicecatalog.amazonaws.com"
            },
            "Action": [
                "kms:DescribeKey",
                "kms:Decrypt",
                "kms:ReEncryptFrom",
                "kms:ReEncryptTo",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key_id"
        }
    ]
}
```

------

이는 와의 통합이 제대로 작동하는 AWS Service Catalog 데 필요한 유일한 권한이어야 합니다. 하지만 `aws:SourceAccount` [Confused Deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy) 컨텍스트 키를 사용하여 이를 더 제한할 수 있습니다. 가 이러한 대기열에 메시지를 AWS Service Catalog 보내면는 키를 프로비저닝 계정의 ID로 AWS Service Catalog 채웁니다. 이는 포트폴리오 공유를 통해 제품을 배포하고 특정 계정만 엔진을 사용하도록 하려는 경우에 유용합니다.

예를 들어 아래 표시된 조건을 사용하여 000000000000 및 111111111111에서 시작된 요청만 허용하도록 엔진을 제한할 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Enable AWS Service Catalog to send messages to the queue",
            "Effect": "Allow",
            "Principal": {
                "Service": "servicecatalog.amazonaws.com"
            },
            "Action": "sqs:SendMessage",
            "Resource": [
                "arn:aws:sqs:us-east-1:111122223333:ServiceCatalogTerraformOSProvisionOperationQueue"
            ],
            "Condition": {
                "StringLike": {
                    "aws:SourceAccount": [
                        "000000000000",
                        "111111111111"
                    ]
                }
            }
        },
        {
            "Sid": "Enable AWS Service Catalog encryption/decryption permissions when sending message to queue",
            "Effect": "Allow",
            "Principal": {
                "Service": "servicecatalog.amazonaws.com"
            },
            "Action": [
                "kms:DescribeKey",
                "kms:Decrypt",
                "kms:ReEncryptFrom",
                "kms:ReEncryptTo",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key_id"
        }
    ]
}
```

------