

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

# AWS CodePipeline 자격 증명 기반 정책 예제
<a name="security_iam_id-based-policy-examples"></a>

기본적으로 IAM 사용자 및 역할은 CodePipeline 리소스를 생성하거나 수정할 수 있는 권한이 없습니다. 또한 AWS Management Console AWS CLI또는 AWS API를 사용하여 작업을 수행할 수 없습니다. IAM 관리자는 지정된 리소스에서 특정 API 작업을 수행할 수 있는 권한을 사용자와 역할에게 부여하는 IAM 정책을 생성해야 합니다. 그런 다음 관리자는 해당 권한이 필요한 IAM 사용자 또는 그룹에 이러한 정책을 연결해야 합니다.

이러한 예제 JSON 정책 문서를 사용하여 IAM ID 기반 정책을 생성하는 방법을 알아보려면 *IAM 사용 설명서*의 [JSON 탭에서 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor)을 참조하세요.

다른 계정의 리소스를 사용하는 파이프라인을 생성하는 방법과 관련 예제 정책은 [CodePipeline에서 다른 AWS 계정의 리소스를 사용하는 파이프라인 생성](pipelines-create-cross-account.md) 섹션을 참조하세요.

**Topics**
+ [정책 모범 사례](security_iam_service-with-iam-policy-best-practices.md)
+ [콘솔에서 리소스 보기](security-iam-resources-console.md)
+ [사용자가 자신의 고유한 권한을 볼 수 있도록 허용](security_iam_id-based-policy-examples-view-own-permissions.md)
+ [자격 증명 기반 정책(IAM)의 예](security-iam-id-policies-examples.md)
+ [태그를 사용하여 CodePipeline 리소스에 대한 액세스 통제](tag-based-access-control.md)
+ [콘솔 사용에 필요한 권한](security-iam-permissions-console.md)
+ [콘솔에서 컴퓨팅 로그를 보는 데 필요한 권한](security-iam-permissions-console-logs.md)
+ [AWS 에 대한 관리형 정책 AWS CodePipeline](managed-policies.md)
+ [고객 관리형 정책 예제](#customer-managed-policies)

# 정책 모범 사례
<a name="security_iam_service-with-iam-policy-best-practices"></a>

ID 기반 정책에 따라 계정에서 사용자가 CodePipeline 리소스를 생성, 액세스 또는 삭제할 수 있는지 여부가 결정됩니다. 이 작업으로 인해 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)를 참조하세요.

# 콘솔에서 리소스 보기
<a name="security-iam-resources-console"></a>

콘솔에는 로그인한 AWS 리전의 AWS 계정에 대한 리포지토리 목록을 표시할 수 있는 `ListRepositories` 권한이 필요합니다. 또한 콘솔에는 리소스의 대/소문자를 구분하지 않고 빠르게 검색할 수 있는 **Go to resource(리소스로 이동)** 기능이 포함되어 있습니다. 이 검색은 로그인한 AWS 리전의 AWS 계정에서 수행됩니다. 다음 서비스에 표시되는 리소스는 다음과 같습니다.
+ AWS CodeBuild: 프로젝트 빌드
+ AWS CodeCommit: 리포지토리
+ AWS CodeDeploy: 애플리케이션
+ AWS CodePipeline: 파이프라인

모든 서비스의 리소스에서 이 검색을 수행하려면 다음 권한이 있어야 합니다.
+ AWS CodeBuild: `ListProjects`
+ CodeCommit: `ListRepositories`
+ CodeDeploy: `ListApplications`
+ CodePipeline: `ListPipelines`

해당 서비스에 대한 권한이 없는 경우 서비스의 리소스에 대한 결과가 반환되지 않습니다. 리소스를 볼 수 있는 권한이 있더라도 해당 리소스 보기에 대한 명시적 `Deny`가 있으면 일부 리소스가 반환되지 않습니다.

# 사용자가 자신의 고유한 권한을 볼 수 있도록 허용
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

이 예제는 IAM 사용자가 자신의 사용자 ID에 연결된 인라인 및 관리형 정책을 볼 수 있도록 허용하는 정책을 생성하는 방법을 보여줍니다. 이 정책에는 콘솔에서 또는 AWS CLI 또는 AWS API를 사용하여 프로그래밍 방식으로이 작업을 완료할 수 있는 권한이 포함됩니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# 자격 증명 기반 정책(IAM)의 예
<a name="security-iam-id-policies-examples"></a>

정책을 IAM ID에 연결할 수 있습니다. 예를 들면, 다음을 수행할 수 있습니다.
+ **계정의 사용자 또는 그룹에 권한 정책 연결 **- 사용자에게 콘솔에서 파이프라인을 볼 수 있는 권한을 부여하려면 사용자가 속한 사용자 또는 그룹에 권한 정책을 연결할 수 있습니다.
+ **역할에 정책 연결(교차 계정 권한 부여)** – ID 기반 권한 정책을 IAM 역할에 연결하여 교차 계정 권한을 부여할 수 있습니다. 예를 들어 계정 A의 관리자는 다음과 AWS 서비스 같이 다른 AWS 계정(예: 계정 B) 또는에 교차 계정 권한을 부여하는 역할을 생성할 수 있습니다.

  1. 계정 A 관리자는 IAM 역할을 생성하고 계정 A의 리소스에 대한 권한을 부여하는 역할에 권한 정책을 연결합니다.

  1. 계정 A 관리자는 계정 B를 역할을 수임할 보안 주체로 식별하는 역할에 신뢰 정책을 연결합니다.

  1. 그런 다음 계정 B 관리자는 계정 B의 사용자에게 역할을 수임할 권한을 위임할 수 있습니다. 이렇게 하면 계정 B의 사용자가 계정 A에서 리소스를 생성하거나 액세스할 수 있습니다. 역할을 AWS 서비스 수임할 권한을 부여하려는 경우 신뢰 정책의 보안 주체가 보안 AWS 서비스 주체가 될 수도 있습니다.

  IAM을 사용하여 권한을 위임하는 방법에 대한 자세한 내용은 *IAM 사용자 안내서*의 [액세스 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)를 참조하세요.

다음은 권한 정책의 예시입니다. 이 정책은 사용자는 `us-west-2 region`에서 `MyFirstPipeline`이라는 이름의 파이프라인에서 모든 단계 간 전환을 활성화하고 비활성화할 권한을 허용합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codepipeline:EnableStageTransition",
        "codepipeline:DisableStageTransition"
      ],
      "Resource" : [
        "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/*"
      ]
    }
  ]
}
```

------

다음 예제는 사용자가 콘솔에서 라는 파이프라인을 볼 수 있지만 변경할 `MyFirstPipeline` 수는 없는 111222333444 계정의 정책을 보여줍니다. 이 정책의 기반은 `AWSCodePipeline_ReadOnlyAccess` 관리형 정책이지만 `MyFirstPipeline` 파이프라인에 대해 특화되어 있으므로 관리형 정책을 바로 사용할 수 없습니다. 특정 파이프라인으로 정책을 제한하고 싶지 않은 경우 로 생성하고 관리하는 관리형 정책의 사용을 고려해 보십시오. 자세한 내용은 [관리형 정책 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html)을 참조하세요. 액세스용으로 만든 IAM 역할에 이 정책을 연결해야 합니다(예: `CrossAccountPipelineViewers` 역할).

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "codepipeline:GetPipeline",
        "codepipeline:GetPipelineState",
        "codepipeline:GetPipelineExecution",
        "codepipeline:ListPipelineExecutions",
        "codepipeline:ListActionExecutions",
        "codepipeline:ListActionTypes",
        "codepipeline:ListPipelines",
        "codepipeline:ListTagsForResource",
        "iam:ListRoles",
        "s3:ListAllMyBuckets",
        "codecommit:ListRepositories",
        "codedeploy:ListApplications",
        "lambda:ListFunctions",
        "codestar-notifications:ListNotificationRules",
        "codestar-notifications:ListEventTypes",
        "codestar-notifications:ListTargets"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline"
    },
    {
      "Action": [
        "codepipeline:GetPipeline",
        "codepipeline:GetPipelineState",
        "codepipeline:GetPipelineExecution",
        "codepipeline:ListPipelineExecutions",
        "codepipeline:ListActionExecutions",
        "codepipeline:ListActionTypes",
        "codepipeline:ListPipelines",
        "codepipeline:ListTagsForResource",
        "iam:ListRoles",
        "s3:GetBucketPolicy",
        "s3:GetObject",
        "s3:ListBucket",
        "codecommit:ListBranches",
        "codedeploy:GetApplication",
        "codedeploy:GetDeploymentGroup",
        "codedeploy:ListDeploymentGroups",
        "elasticbeanstalk:DescribeApplications",
        "elasticbeanstalk:DescribeEnvironments",
        "lambda:GetFunctionConfiguration",
        "opsworks:DescribeApps",
        "opsworks:DescribeLayers",
        "opsworks:DescribeStacks"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Sid": "CodeStarNotificationsReadOnlyAccess",
      "Effect": "Allow",
      "Action": [
        "codestar-notifications:DescribeNotificationRule"
      ],
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "codestar-notifications:NotificationsForResource": "arn:aws:iam::*:role/Service*"
        }
      }
    }
  ]
}
```

------

일단 이 정책을 만들었으면 111222333444 계정에 IAM 역할을 만들어 역할에 이 정책을 연결하세요. 역할의 신뢰 관계에서이 역할을 수임할 AWS 계정을 추가해야 합니다. 다음 예제는 *111111111111* AWS 계정의 사용자가 111222333444 계정에 정의된 역할을 수임하도록 허용하는 정책을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:root"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

다음 예제는 사용자가 *111111111111* AWS 계정에서 *CrossAccountPipelineViewers*라는 역할을 수임하도록 허용하는 111222333444 계정에서 생성된 정책을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::111222333444:role/CrossAccountPipelineViewers"
        }
    ]
}
```

------

IAM 정책을 생성하여 계정의 사용자가 액세스할 수 있는 호출 및 리소스를 제한한 다음, 해당 정책을 관리 사용자에게 연결합니다. IAM 역할을 생성하고에 대한 IAM 정책 설명 예제를 탐색하는 방법에 대한 자세한 내용은 섹션을 참조하세요[고객 관리형 정책 예제](security_iam_id-based-policy-examples.md#customer-managed-policies).

# 태그를 사용하여 CodePipeline 리소스에 대한 액세스 통제
<a name="tag-based-access-control"></a>

IAM 정책 설명의 조건은 CodePipeline 작업에 필요한 리소스에 대한 권한을 지정하는 데 사용하는 구문의 일부입니다. 조건에 태그를 사용하는 것은 리소스 및 요청에 대한 액세스를 제어하는 하나의 방법입니다. CodePipeline 리소스 태깅에 대한 자세한 내용은 [리소스에 태그 지정](tag-resources.md) 섹션을 참조하세요. 이 주제에서는 태그 기반 액세스 제어를 다룹니다.

IAM 정책을 설계할 때 특정 리소스에 대한 액세스 권한을 부여하여 세부적인 권한을 설정할 수 있습니다. 관리하는 리소스의 개수가 늘어날수록 이 작업은 더 어려워집니다. 리소스에 태그를 지정하고 정책 문 조건에서 태그를 사용하면 이러한 작업이 더 간단해질 수 있습니다. 특정 태그를 사용하여 리소스에 대량으로 액세스 권한을 부여합니다. 그런 다음, 생성 중 또는 나중에 이 태그를 관련 리소스에 반복해서 적용합니다.

리소스에 태그가 연결되거나 태그 지정을 지원하는 서비스에 대한 요청에서 전달될 수 있습니다. CodePipeline에서 리소스에 태그가 있을 수 있고 일부 작업에 태그가 포함될 수 있습니다. IAM 정책을 생성하면 태그 조건 키를 사용하여 다음을 제어할 수 있습니다.
+ 파이프라인 리소스에 이미 있는 태그를 기반으로 해당 리소스에 대해 작업을 수행할 수 있는 사용자
+ 작업의 요청에서 전달될 수 있는 태그
+ 요청에서 특정 키를 사용할 수 있는지 여부를 통제합니다.

문자열 조건 연산자를 사용하여 키와 문자열 값을 비교한 결과에 따라 액세스를 제한하는 `Condition` 요소를 생성할 수 있습니다. Null 조건을 제외하고 조건 연산자 이름 끝에 `IfExists`를 추가할 수 있습니다. 이렇게 하면 "요청 콘텍스트에 정책 키가 있으면 정책에 지정된 대로 키를 처리하고, 키가 없으면 조건 요소를 true로 평가합니다." 예를 들어 다른 유형의 리소스에는 없을 수도 있는 조건 키로 제한하는 데 `StringEqualsIfExists`를 사용할 수 있습니다.

태그 조건 키의 전체 구문 및 의미는 [태그를 사용한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)를 참조하세요. 조건 키에 대한 자세한 내용은 다음 리소스를 참조하세요. 이 섹션의 CodePipeline 정책 예제는 조건 키에 대한 다음 정보와 일치하며, 이를 리소스 중첩과 같은 CodePipeline의 미묘한 차이에 대한 예시로 확장합니다.
+ [문자열 조건 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)
+ [AWS 서비스 IAM에서 작동하는](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)
+ [SCP 구문](https://docs.aws.amazon.com/IAM/latest/UserGuide/orgs_manage_policies_scps_syntax.html)
+ [IAM JSON 정책 요소: Condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)
+ [aws:RequestTag/tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag)
+ [CodePipeline에 사용되는 조건 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscodepipeline.html#awscodepipeline-policy-keys)

다음 예에서는 CodePipeline 사용자에 정책의 태그 조건을 지정하는 방법을 설명합니다.

**Example 1: 요청의 태그 기반 작업 제한**  
`AWSCodePipeline_FullAccess` 관리형 사용자 정책은 사용자에게 모든 리소스에서 모든 CodePipeline 작업을 수행할 수 있는 무제한적인 권한을 제공합니다.  
다음 정책은 이러한 기능을 제한하고 권한이 없는 사용자가 요청에 특정 태그가 나열된 파이프라인을 생성할 수 있는 권한을 거부합니다. 이와 관련하여 정책은 요청이 `ProjectA` 또는 `ProjectB` 값 중 하나와 함께 `Project`라는 태그를 지정하는 경우 `CreatePipeline` 작업을 거부합니다. `aws:RequestTag` 조건 키는 IAM 요청에서 전달할 수 있는 태그를 제어하는 데 사용됩니다.  
다음 예제에서 정책의 목적은 지정된 태그 값으로 파이프라인을 생성할 권한이 없는 사용자의 권한을 거부하는 것입니다. 하지만 파이프라인을 생성하려면 파이프라인 자체 외에도 리소스(예: 파이프라인 작업 및 단계)에 액세스해야 합니다. 정책에 지정된 `'Resource'`가 `'*'`이므로 ARN이 있는 모든 리소스에 대해 정책이 평가되며 파이프라인 생성 시 생성됩니다. 하지만 이러한 추가 리소스에는 태그 조건 키가 없기 때문에 `StringEquals` 검사는 fail로 끝나고 사용자에게 권한이 부여되지 않아 어떤 파이프라인도 생성하지 못합니다. 이 문제를 해결하려면 그 대신 `StringEqualsIfExists` 조건 연산자를 사용해야 합니다. 이렇게 하면 조건 키가 존재하는 경우에만 테스트가 실행됩니다.  
그 결과 다음은 이렇게 해석할 수 있습니다. “검사 대상 리소스에 태그 `"RequestTag/Project"` 조건 키가 있으면 키 값이 `projectA`로 시작할 때에만 작업을 허용합니다. 검사 대상 리소스에 조건 키가 없으면 그냥 둡니다."  
또한 `aws:TagKeys` 조건 키를 사용하여 동일한 태그 값을 포함하는 태그 수정 작업을 허용하지 않음으로써 이러한 권한이 없는 사용자가 리소스를 변경하지 못하게 합니다. 고객의 관리자는 권한이 없는 관리 사용자에게 관리형 사용자 정책 이외에 이 IAM 정책도 연결해야 합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codepipeline:CreatePipeline",
        "codepipeline:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEqualsIfExists": {
          "aws:RequestTag/Project": ["ProjectA", "ProjectB"]
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "codepipeline:UntagResource"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["Project"]
        }
      }
    }
  ]
}
```

**Example 2: 리소스 태그 기반 태그 지정 작업 제한**  
`AWSCodePipeline_FullAccess` 관리형 사용자 정책은 사용자에게 모든 리소스에서 모든 CodePipeline 작업을 수행할 수 있는 무제한적인 권한을 제공합니다.  
다음 정책은 이러한 기능을 제한하고 권한이 없는 사용자의 지정된 프로젝트 파이프라인에 대한 작업 수행 권한을 거부합니다. 이와 관련하여 정책은 리소스에 `ProjectA` 또는 `ProjectB` 값 중 하나가 포함된 `Project` 태그가 있으면 일부 작업을 거부합니다. `aws:ResourceTag` 조건 키는 해당 리소스의 태그를 기반으로 리소스에 대한 액세스를 제어하는 데 사용됩니다. 고객의 관리자는 권한이 없는 IAM 사용자에게 관리형 사용자 정책 이외에 이 IAM 정책도 연결해야 합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codepipeline:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Project": ["ProjectA", "ProjectB"]
        }
      }
    }
  ]
}
```

**Example 3: 요청의 태그 기반 작업 허용**  
다음 정책은 사용자에게 CodePipeline에서 개발 파이프라인을 생성할 수 있는 권한을 부여합니다.  
이와 관련하여 정책은 요청이 `ProjectA` 값이 포함된 `Project` 태그를 지정하는 경우 `CreatePipeline` 및 `TagResource` 작업을 허용합니다. 즉, 지정할 수 있는 유일한 태그 키는 `Project`이며, 해당 값은 `ProjectA`이어야 합니다.  
`aws:RequestTag` 조건 키는 IAM 요청에서 전달할 수 있는 태그를 제어하는 데 사용됩니다. `aws:TagKeys` 조건은 태그 키의 대/소문자를 구분합니다. 이 정책은 `AWSCodePipeline_FullAccess` 관리형 사용자 정책이 연결되어 있지 않은 사용자 또는 역할에 유용합니다. 관리형 정책은 사용자에게 모든 리소스에서 모든 CodePipeline 작업을 수행할 수 있는 무제한적인 권한을 제공합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codepipeline:CreatePipeline",
        "codepipeline:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/Project": "ProjectA"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["Project"]
        }
      }
    }
  ]
}
```

**Example 4: 리소스 태그 기반 태그 해제 작업 제한**  
`AWSCodePipeline_FullAccess` 관리형 사용자 정책은 사용자에게 모든 리소스에서 모든 CodePipeline 작업을 수행할 수 있는 무제한적인 권한을 제공합니다.  
다음 정책은 이러한 기능을 제한하고 권한이 없는 사용자의 지정된 프로젝트 파이프라인에 대한 작업 수행 권한을 거부합니다. 이와 관련하여 정책은 리소스에 `ProjectA` 또는 `ProjectB` 값 중 하나가 포함된 `Project` 태그가 있으면 일부 작업을 거부합니다.  
또한 `aws:TagKeys` 조건 키를 사용하여 `Project` 태그를 완전히 제거하는 태그 수정 작업을 허용하지 않음으로써 이러한 권한이 없는 사용자가 리소스를 변경하지 못하게 합니다. 고객의 관리자는 권한이 없는 사용자 또는 역할에 관리형 사용자 정책 이외에 이 IAM 정책도 연결해야 합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codepipeline:UntagResource"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["Project"]
        }
      }
    }
  ]
}
```

# 콘솔 사용에 필요한 권한
<a name="security-iam-permissions-console"></a>

 콘솔에서 를 사용하려면 다음 서비스의 최소 권한이 있어야 합니다.
+ AWS Identity and Access Management
+ Amazon Simple Storage Service

이러한 권한을 통해 계정의 다른 AWS 리소스를 설명할 수 있습니다 AWS .

사용자의 파이프라인에 통합하는 다른 서비스에 따라 다음 중 한 가지 이상의 권한이 필요할 수 있습니다.
+ AWS CodeCommit
+ AWS CodeBuild
+ CloudFormation
+ AWS CodeDeploy
+ AWS Elastic Beanstalk
+ AWS Lambda
+ AWS OpsWorks

최소 필수 권한보다 더 제한적인 IAM 정책을 만들면 콘솔은 해당 IAM 정책에 연결된 사용자에 대해 의도대로 작동하지 않습니다. 이 사용자가 콘솔을 사용할 수 있도록 하려면 `AWSCodePipeline_ReadOnlyAccess` 관리형 정책을 사용자에게 연결합니다([AWS 에 대한 관리형 정책 AWS CodePipeline](managed-policies.md) 참조).

 AWS CLI 또는 API를 호출하는 사용자에게는 최소 콘솔 권한을 허용할 필요가 없습니다.

# 콘솔에서 컴퓨팅 로그를 보는 데 필요한 권한
<a name="security-iam-permissions-console-logs"></a>

CodePipeline 콘솔의 명령 작업에서 로그를 보려면 콘솔 역할에 권한이 있어야 합니다. 콘솔에서 로그를 보려면 콘솔 역할에 `logs:GetLogEvents` 권한을 추가합니다.

콘솔 역할 정책 설명에서 다음 예제와 같이 파이프라인 수준까지 권한의 범위를 좁힙니다.

```
{
    "Effect": "Allow",
    "Action": [
        "Action": "logs:GetLogEvents"
    ],
    "Resource": "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*"
}
```

# AWS 에 대한 관리형 정책 AWS CodePipeline
<a name="managed-policies"></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)을 참조하세요.

**중요**  
AWS 관리형 정책 `AWSCodePipelineFullAccess` 및 `AWSCodePipelineReadOnlyAccess`가 교체되었습니다. `AWSCodePipeline_FullAccess` 및 `AWSCodePipeline_ReadOnlyAccess` 정책을 사용하세요.













## AWS 관리형 정책: `AWSCodePipeline_FullAccess`
<a name="security-iam-awsmanpol-AWSCodePipeline_FullAccess"></a>





CodePipeline에 대한 모든 액세스 권한을 부여하는 정책입니다. IAM 콘솔에서 JSON 정책 문서를 보려면 [AWSCodePipeline\$1FullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSCodePipeline_FullAccess)를 참조하세요.



**권한 세부 정보**

이 정책에는 다음 권한이 포함되어 있습니다.




+ `codepipeline` – CodePipeline에 권한을 부여합니다.
+ `chatbot` – 보안 주체가 채팅 애플리케이션에서 Amazon Q Developer의 리소스를 관리할 수 있도록 권한을 부여합니다.
+ `cloudformation` - 보안 주체가 리소스 스택을 관리할 수 있는 권한을 부여합니다 CloudFormation.
+ `cloudtrail` – 보안 주체가 CloudTrail에서 로깅 리소스를 관리할 수 있는 권한을 부여합니다.
+ `codebuild` – 보안 주체가 CodeBuild에서 빌드 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `codecommit` – 보안 주체가 CodeCommit에서 소스 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `codedeploy` – 보안 주체가 CodeDeploy에서 배포 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `codestar-notifications` - 보안 주체가 AWS CodeStar 알림의 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `ec2` – CodeCatalyst의 배포가 Amazon EC2에서 Elastic Load Balancing을 관리할 수 있는 권한을 부여합니다.
+ `ecr` – Amazon ECR의 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `elasticbeanstalk` – 보안 주체가 Elastic Beanstalk에서 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `iam` – 보안 주체가 IAM에서 역할 및 정책을 관리할 수 있는 권한을 부여합니다.
+ `lambda` – 보안 주체가 Lambda에서 리소스를 관리할 수 있는 권한을 부여합니다.
+ `events` – 보안 주체가 CloudWatch Events에서 리소스를 관리할 수 있는 권한을 부여합니다.
+ `opsworks` - 보안 주체가 리소스를 관리할 수 있는 권한을 부여합니다 AWS OpsWorks.
+ `s3` – 보안 주체가 Amazon S3에서 리소스를 관리할 수 있는 권한을 부여합니다.
+ `sns` – 보안 주체가 Amazon SNS에서 알림 리소스를 관리할 수 있는 권한을 부여합니다.
+ `states` - 보안 주체가 상태 시스템을 볼 수 있는 권한을 부여합니다 AWS Step Functions. 상태 머신은 작업을 관리하고 상태 간 전환을 수행하는 상태 모음으로 구성됩니다.

정책은 [AWSCodePipeline\$1FullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodePipeline_FullAccess.html)를 참조하세요.

## AWS 관리형 정책: `AWSCodePipeline_ReadOnlyAccess`
<a name="security-iam-awsmanpol-AWSCodePipeline_ReadOnlyAccess"></a>





CodePipeline에 대한 읽기 전용 액세스 권한을 부여하는 정책입니다. IAM 콘솔에서 JSON 정책 문서를 보려면 [AWSCodePipeline\$1ReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSCodePipeline_ReadOnlyAccess)를 참조하세요.



**권한 세부 정보**

이 정책에는 다음 권한이 포함되어 있습니다.




+ `codepipeline` – CodePipeline의 작업에 권한을 부여합니다.
+ `codestar-notifications` - 보안 주체가 AWS CodeStar 알림의 리소스에 액세스할 수 있는 권한을 부여합니다.
+ `s3` – 보안 주체가 Amazon S3에서 리소스를 관리할 수 있는 권한을 부여합니다.
+ `sns` – 보안 주체가 Amazon SNS에서 알림 리소스를 관리할 수 있는 권한을 부여합니다.

정책은 [AWSCodePipeline\$1ReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodePipeline_ReadOnlyAccess.html)를 참조하세요.



## AWS 관리형 정책: `AWSCodePipelineApproverAccess`
<a name="security-iam-awsmanpol-AWSCodePipeline_Approver"></a>





이는 수동 승인 작업을 승인하거나 거부할 권한을 부여하는 정책입니다. IAM 콘솔에서 JSON 정책 문서를 보려면 [AWSCodePipelineApproverAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSCodePipelineApproverAccess)를 참조하세요.



**권한 세부 정보**

이 정책에는 다음 권한이 포함되어 있습니다.




+ `codepipeline` – CodePipeline의 작업에 권한을 부여합니다.

정책은 [AWSCodePipelineApproverAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodePipelineApproverAccess.html)를 참조하세요.

## AWS 관리형 정책: `AWSCodePipelineCustomActionAccess`
<a name="security-iam-awsmanpol-AWSCodePipelineCustomActionAccess"></a>





이 정책은 CodePipeline에 사용자 지정 작업을 만들거나 빌드 또는 테스트 작업을 위한 Jenkins 리소스를 통합할 권한을 부여하는 정책입니다. IAM 콘솔에서 JSON 정책 문서를 보려면 [AWSCodePipelineCustomActionAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSCodePipelineCustomActionAccess)를 참조하세요.



**권한 세부 정보**

이 정책에는 다음 권한이 포함되어 있습니다.




+ `codepipeline` – CodePipeline의 작업에 권한을 부여합니다.

정책은 [AWSCodePipelineCustomActionAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodePipelineCustomActionAccess.html)를 참조하세요.

## CodePipeline 관리형 정책 및 알림
<a name="notifications-permissions"></a>

CodePipeline에서는 사용자에게 파이프라인에 대한 중요한 변경 사항을 알릴 수 있는 알림을 지원합니다. CodePipeline에 대한 관리형 정책에는 알림 기능에 대한 정책 설명이 포함되어 있습니다. 자세한 내용은 [알림이란 무엇입니까?](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/welcome.html)를 참조하세요.

### 전체 액세스 관리형 정책의 알림과 관련된 권한
<a name="notifications-fullaccess"></a>

이 관리형 정책은 관련 서비스 CodeCommit, CodeBuild, CodeDeploy 및 AWS CodeStar Notifications와 함께 CodePipeline에 대한 권한을 부여합니다. 또한 이 정책은 Amazon S3, Elastic Beanstalk, CloudTrail, Amazon EC2 및 CloudFormation등과 같이 파이프라인과 통합되는 다른 서비스를 사용하는 데 필요한 권한을 부여합니다. 또한 이러한 관리형 정책이 적용된 사용자는 알림에 대한 Amazon SNS 주제를 생성 및 관리하고, 주제에 대해 사용자를 구독 및 구독 취소하고, 알림 규칙의 대상으로 선택할 주제를 나열하고, Slack에 대해 구성된 채팅 애플리케이션 클라이언트에서 Amazon Q Developer를 나열할 수 있습니다.

`AWSCodePipeline_FullAccess` 관리형 정책에는 알림에 대한 전체 액세스를 허용하는 다음 설명이 포함되어 있습니다.

```
    {
        "Sid": "CodeStarNotificationsReadWriteAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:DeleteNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
        ],
        "Resource": "*",
        "Condition" : {
            "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline"} 
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource",
            "codestar-notifications:ListEventTypes"
        ],
        "Resource": "*"
    },
    {
        "Sid": "CodeStarNotificationsSNSTopicCreateAccess",
        "Effect": "Allow",
        "Action": [
            "sns:CreateTopic",
            "sns:SetTopicAttributes"
        ],
        "Resource": "arn:aws:sns:*:*:codestar-notifications*"
    },
    {
        "Sid": "SNSTopicListAccess",
        "Effect": "Allow",
        "Action": [
            "sns:ListTopics"
        ],
        "Resource": "*"
    },
    {
        "Sid": "CodeStarNotificationsChatbotAccess",
        "Effect": "Allow",
        "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
       "Resource": "*"
    }
```

### 읽기 전용 관리형 정책의 알림과 관련된 권한
<a name="notifications-readonly"></a>

`AWSCodePipeline_ReadOnlyAccess` 관리형 정책에는 알림에 대한 읽기 전용 액세스를 허용하는 다음 설명이 포함되어 있습니다. 이 정책이 적용된 사용자는 리소스에 대한 알림을 볼 수 있지만 리소스를 생성, 관리 또는 구독할 수는 없습니다.

```
   {
        "Sid": "CodeStarNotificationsPowerUserAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:DescribeNotificationRule"
        ],
        "Resource": "*",
        "Condition" : {
            "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline"} 
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListEventTypes",
            "codestar-notifications:ListTargets"
        ],
        "Resource": "*"
    }
```

IAM 및 알림에 대한 자세한 내용은 [AWS CodeStar 알림의 Identity and Access Management](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/security-iam.html)를 참조하세요.

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



이 서비스가 이러한 변경 사항을 추적하기 시작한 이후부터 CodePipeline의 AWS 관리형 정책 업데이트에 대한 세부 정보를 봅니다. 이 페이지의 변경 사항에 대한 자동 알림을 받으려면 CodePipeline [문서 기록](https://docs.aws.amazon.com/codepipeline/latest/userguide/history.html) 페이지에서 RSS 피드를 구독하세요.




| 변경 | 설명 | Date | 
| --- | --- | --- | 
| [AWSCodePipeline\$1FullAccess](#security-iam-awsmanpol-AWSCodePipeline_FullAccess) – 기존 정책 업데이트 | CodePipeline은 CloudFormation에서 ListStacks를 지원하도록 이 정책에 대한 권한을 추가했습니다. | 2024년 3월 15일 | 
| [AWSCodePipeline\$1FullAccess](#security-iam-awsmanpol-AWSCodePipeline_FullAccess) – 기존 정책 업데이트 | 이 정책은 채팅 애플리케이션에서 Amazon Q Developer에 대한 권한을 추가하도록 업데이트되었습니다. 자세한 내용은 [CodePipeline 관리형 정책 및 알림](#notifications-permissions) 단원을 참조하십시오. | 2023년 6월 21일 | 
|  [AWSCodePipeline\$1FullAccess](#security-iam-awsmanpol-AWSCodePipeline_FullAccess) 및 [AWSCodePipeline\$1ReadOnlyAccess](#security-iam-awsmanpol-AWSCodePipeline_ReadOnlyAccess) 관리형 정책 – 기존 정책에 대한 업데이트  |  CodePipeline은 채팅 애플리케이션 `chatbot:ListMicrosoftTeamsChannelConfigurations`에서 Amazon Q Developer를 사용한 추가 알림 유형을 지원하기 위해 이러한 정책에 권한을 추가했습니다.  | 2023년 5월 16일 | 
|  **AWSCodePipelineFullAccess** – 사용되지 않음  |  이 정책은 `AWSCodePipeline_FullAccess`로 대체되었습니다. 2022년 11월 17일 이후에는 이 정책을 새 사용자, 그룹 또는 역할에 연결할 수 없습니다. 자세한 내용은 [AWS 에 대한 관리형 정책 AWS CodePipeline](#managed-policies) 단원을 참조하십시오.  | 2022년 11월 17일 | 
|  **AWSCodePipelineReadOnlyAccess** – 사용되지 않음  |  이 정책은 `AWSCodePipeline_ReadOnlyAccess`로 대체되었습니다. 2022년 11월 17일 이후에는 이 정책을 새 사용자, 그룹 또는 역할에 연결할 수 없습니다. 자세한 내용은 [AWS 에 대한 관리형 정책 AWS CodePipeline](#managed-policies) 단원을 참조하십시오.  | 2022년 11월 17일 | 
|  CodePipeline에서 변경 사항 추적 시작  |  CodePipeline이 AWS 관리형 정책에 대한 변경 사항 추적을 시작했습니다.  | 2021년 3월 12일 | 

## 고객 관리형 정책 예제
<a name="customer-managed-policies"></a>

이 단원에서는 다양한 작업에 대한 권한을 부여하는 사용자 정책의 예를 제공합니다. 이러한 정책은 API, AWS SDKs 또는를 사용할 때 작동합니다 AWS CLI. 콘솔을 사용하는 경우 콘솔에 특정한 추가 권한을 부여해야 합니다. 자세한 내용은 [콘솔 사용에 필요한 권한](security-iam-permissions-console.md) 단원을 참조하십시오.

**참고**  
모든 예에서는 미국 서부(오리건) 리전(`us-west-2`)을 사용하며 가상의 계정 ID를 포함합니다.

**예시**
+ [예 1: 파이프라인 상태를 입수하도록 권한 부여](#identity-based-policies-example-1)
+ [예 2: 단계 간 전환을 활성화하고 비활성화할 권한 부여](#identity-based-policies-example-2)
+ [예 3: 사용 가능한 모든 작업 유형의 목록을 가져올 수 있는 권한 부여](#identity-based-policies-example-3)
+ [예 4: 수동 승인 작업을 승인 또는 거부할 권한 부여](#identity-based-policies-example-4)
+ [예 5: 사용자 지정 작업에 대한 작업 폴 권한 부여](#identity-based-policies-example-5)
+ [예제 6: Jenkins와 AWS CodePipeline 통합을 위한 정책 연결 또는 편집](#identity-based-policies-example-6)
+ [예 7: 파이프라인에 대한 교차 계정 액세스 구성](#identity-based-policies-example-7)

### 예 1: 파이프라인 상태를 입수하도록 권한 부여
<a name="identity-based-policies-example-1"></a>

다음 예는 `MyFirstPipeline`이라는 이름의 파이프라인 상태를 입수할 권한을 허용합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:GetPipelineState"
            ],
            "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline"
        }
    ]
}
```

------

### 예 2: 단계 간 전환을 활성화하고 비활성화할 권한 부여
<a name="identity-based-policies-example-2"></a>

다음 예는 `MyFirstPipeline`이라는 이름의 파이프라인에서 모든 단계 간 전환을 활성화하고 비활성화할 권한을 허용합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:DisableStageTransition",
                "codepipeline:EnableStageTransition"
            ],
            "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/*"
        }
    ]
}
```

------

파이프라인에서 단일 단계의 전환을 활성화하고 비활성화하는 권한을 사용자에게 주려면 해당 단계를 지정해야 합니다. 예를 들어 `MyFirstPipeline`이라는 파이프라인에서 `Staging`이라는 단계의 전환을 활성화 및 비활성화하도록 하려면 다음과 같이 합니다.

```
"Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/Staging"
```

### 예 3: 사용 가능한 모든 작업 유형의 목록을 가져올 수 있는 권한 부여
<a name="identity-based-policies-example-3"></a>

다음 예는 `us-west-2` 리전에서 파이프라인에 이용할 수 있는 모든 작업 유형의 목록을 가져올 권한을 허용합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:ListActionTypes"
            ],
            "Resource": "arn:aws:codepipeline:us-west-2:111222333444:actiontype:*"
        }
    ]
}
```

------

### 예 4: 수동 승인 작업을 승인 또는 거부할 권한 부여
<a name="identity-based-policies-example-4"></a>

다음 예는 `MyFirstPipeline`이라는 파이프라인의 `Staging`이라는 단계에서 수동 승인 작업을 승인하거나 거부할 권한을 허용합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:PutApprovalResult"
            ],
            "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/Staging/*"
        }
    ]
}
```

------

### 예 5: 사용자 지정 작업에 대한 작업 폴 권한 부여
<a name="identity-based-policies-example-5"></a>

다음 예는 `TestProvider`라는 이름으로 모든 파이프라인을 통틀어 첫 버전에서 `Test` 작업 유형에 해당하는 사용자 지정 작업에 대하여 작업 폴 권한을 허용합니다.

**참고**  
다른 AWS 계정 하에 사용자 지정 작업을 다룰 작업자를 구성하거나 특정 IAM 역할을 갖춰야 작업하도록 할 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:PollForJobs"
            ],
            "Resource": [
                "arn:aws:codepipeline:us-west-2:111222333444:actionType:Custom/Test/TestProvider/1"
            ]
        }
    ]
}
```

------

### 예제 6: Jenkins와 AWS CodePipeline 통합을 위한 정책 연결 또는 편집
<a name="identity-based-policies-example-6"></a>

빌드 또는 테스트에 Jenkins를 사용하도록 파이프라인을 구성하는 경우 해당 통합에 대해 별도의 자격 증명을 생성하고 Jenkins와 간의 통합에 필요한 최소 권한이 있는 IAM 정책을 연결합니다. 이 정책은 `AWSCodePipelineCustomActionAccess` 관리형 정책과 동일합니다. 다음은 Jenkins 통합을 위한 정책을 나타낸 예입니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 

    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:AcknowledgeJob",
                "codepipeline:GetJobDetails",
                "codepipeline:PollForJobs",
                "codepipeline:PutJobFailureResult",
                "codepipeline:PutJobSuccessResult"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### 예 7: 파이프라인에 대한 교차 계정 액세스 구성
<a name="identity-based-policies-example-7"></a>

다른 AWS 계정의 사용자 및 그룹에 대한 파이프라인 액세스를 구성할 수 있습니다. 권장 방법은 파이프라인이 생성된 계정에 역할을 만드는 것입니다. 역할은 다른 AWS 계정의 사용자가 해당 역할을 수임하고 파이프라인에 액세스할 수 있도록 허용해야 합니다. 자세한 내용은 [연습: 역할을 사용한 교차 계정 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/walkthru_cross-account-with-roles.html) 단원을 참조하십시오.

다음 예제는 80398EXAMPLE 계정의 정책을 보여 줍니다.이 정책은 사용자가 콘솔`MyFirstPipeline`에서 라는 파이프라인을 볼 수 있지만 변경할 수는 없습니다. 이 정책의 기반은 `AWSCodePipeline_ReadOnlyAccess` 관리형 정책이지만 `MyFirstPipeline` 파이프라인에 대해 특화되어 있으므로 관리형 정책을 바로 사용할 수 없습니다. 특정 파이프라인으로 정책을 제한하고 싶지 않은 경우 로 생성하고 관리하는 관리형 정책의 사용을 고려해 보십시오. 자세한 내용은 [관리형 정책 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html)을 참조하세요. 액세스용으로 만든 IAM 역할에 이 정책을 연결해야 합니다(예: `CrossAccountPipelineViewers` 역할).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 

    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:GetPipeline",
                "codepipeline:GetPipelineState",
                "codepipeline:ListActionTypes",
                "codepipeline:ListPipelines",
                "iam:ListRoles",
                "s3:GetBucketPolicy",
                "s3:GetObject",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "codedeploy:GetApplication",
                "codedeploy:GetDeploymentGroup",
                "codedeploy:ListApplications",
                "codedeploy:ListDeploymentGroups",
                "elasticbeanstalk:DescribeApplications",
                "elasticbeanstalk:DescribeEnvironments",
                "lambda:GetFunctionConfiguration",
                "lambda:ListFunctions"
            ],
            "Resource": "arn:aws:codepipeline:us-east-2:111122223333:MyFirstPipeline"
        }
    ]
}
```

------

일단 이 정책을 만들었으면 80398EXAMPLE 계정에 IAM 역할을 만들어 역할에 이 정책을 연결하세요. 역할의 신뢰 관계에서이 역할을 수임하는 AWS 계정을 추가해야 합니다.

다음 예제는 사용자가 80398EXAMPLE 계정에서 라는 역할을 수임하도록 허용하는 *111111111111* AWS 계정`CrossAccountPipelineViewers`에서 생성된 정책을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::111122223333:role/CrossAccountPipelineViewers"
        }
    ]
}
```

------