GitHub 인증 구성 - AWS CodePipeline

GitHub 인증 구성

CodePipeline는 GitHub OAuth 토큰 및 개인 액세스 토큰을 사용하여 GitHub 리포지토리에 액세스하고 최신 변경 사항을 검색합니다. GitHub에서 인증을 구성하는 방법은 2가지입니다.

  • 콘솔을 사용하여 파이프라인을 만들거나 업데이트하면 AWS에서 기본 AWS 관리형 OAuth 토큰을 만듭니다.

  • 자체의 고객 생성 개인 액세스 토큰을 만들고 관리할 수 있습니다. CLI, SDK 또는 AWS CloudFormation을 사용하여 파이프라인을 만들거나 업데이트할 때 개인 액세스 토큰이 필요합니다.

권한 있는 OAuth 앱 보기

CodePipeline이 GitHub와 통합하기 위해 OAuth 토큰을 사용합니다. GitHub는 CodePipeline에 대한 OAuth 토큰의 권한을 추적합니다.

GitHub에서 권한 있는 통합을 보려면

  1. GitHub의 프로필 사진에 있는 드롭다운 옵션에서 설정을 선택합니다.

  2. 애플리케이션을 선택한 후 Authorized OAuth Apps(권한 있는 OAuth 앱)를 선택합니다.

  3. 권한 있는 앱을 검토합니다.

    
                                GitHub에서 권한 있는 앱 검토.

GitHub 및 CodePipeline CLI를 사용하여 GitHub 개인 액세스 토큰을 만들고 정기적으로 교체

스크립트에서 암호 대신에 토큰을 사용하는 장점은 토큰은 취소하거나 교체할 수 있다는 것입니다. 개인용 액세스 토큰에 특정 권한을 부여할 수도 있습니다. 토큰은 안전하게 보관하고, 정기적으로 교체하거나 다시 생성해야 합니다. 토큰 교체는 RFC-6819(OAuth 2.0 위협 모델 및 보안 고려 사항), 5.1.5.3항에 명시된 권장 사항입니다.

자세한 내용은 GitHub 웹 사이트의 Creating a personal access token for the command line(명령줄에 대한 개인용 액세스 토큰 만들기)을 참조하십시오.

새 개인 액세스 토큰을 다시 생성한 후 AWS CLI 또는 API를 사용하거나 AWS CloudFormation을 사용하고 UpdatePipeline을 호출하여 교체할 수 있습니다.

참고

여러 애플리케이션에서 동일한 개인용 액세스 토큰을 사용하는 경우 다른 애플리케이션을 업데이트해야 할 수 있습니다. 보안을 위해 여러 애플리케이션에서 단일 토큰을 공유하지 않는 것이 좋습니다. 애플리케이션별로 새 개인 액세스 토큰을 만듭니다.

다음 단계에 따라 GitHub 개인용 액세스 토큰을 교체한 후 새 토큰으로 파이프라인 구조를 업데이트합니다.

참고

개인용 액세스 토큰을 교체한 후에는 이전 토큰 정보가 포함된 AWS CLI 스크립트 또는 AWS CloudFormation 템플릿을 모두 업데이트해야 합니다.

  1. GitHub의 프로필 사진에 있는 드롭다운 옵션에서 설정을 선택합니다.

  2. Developer settings(개발자 설정)를 선택한 후 Personal access tokens(개인용 액세스 토큰)를 선택합니다.

  3. GitHub 개인 액세스 토큰 옆의 편집을 선택합니다.

    
                                개인 액세스 토큰 편집.
  4. Regenerate token(토큰 다시 생성)을 선택합니다.

    
                                개인 액세스 토큰을 다시 생성하여 편집.
  5. 다시 생성된 토큰 옆의 복사 아이콘을 선택합니다.

    
                                교체된 토큰 복사.
  6. 터미널(Linux, macOS, or Unix) 또는 명령 프롬프트(Windows)에서, 개인 액세스 토큰을 변경하려는 파이프라인에 대해 get-pipeline 명령을 실행한 다음, 명령 출력을 JSON 파일에 복사합니다. 예를 들어 이라는 파이프라인의 경우 다음과 유사한 명령을 입력합니다.

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    명령 출력이 pipeline.json 파일로 전송됩니다.

  7. 일반 텍스트 편집기에서 파일을 열고 GitHub 작업의 OAuthTokenField에 있는 값을 편집합니다.

    AWS CLI를 사용하여 파이프라인을 생성할 때 이 필드에 GitHub 개인 액세스 토큰을 전달할 수 있습니다. 별표(****)는 GitHub에서 복사한 토큰으로 바꿉니다. 작업 구성을 보기 위해 get-pipeline을 실행하면 이 값에 대해 별표 4개 마스크가 표시됩니다. 예를 들어, 값이 111222333444555666777888EXAMPLE인 개인 액세스 토큰의 경우:

    "configuration": { "Owner": "MyGitHubUserName", "Repo": "test-repo", "Branch": "master", "OAuthToken": "111222333444555666777888EXAMPLE" }
    참고

    AWS CloudFormation 템플릿을 사용하여 파이프라인을 업데이트하는 경우 먼저 토큰을 AWS Secrets Manager에 보안 암호로 저장해야 합니다. 이 필드의 값을 Secrets Manager에 저장된 보안 암호에 대한 동적 참조로 포함합니다. 문제 해결 예는 GitHub을(를) 참조하십시오.

  8. get-pipeline 명령을 사용하여 검색한 파이프라인 구조로 작업 중인 경우, 파일에서 metadata 행을 삭제하여 JSON 파일의 구조를 수정해야 합니다. 이렇게 하지 않으면 update-pipeline 명령에서 사용할 수 없습니다. JSON 파일의 파이프라인 구조에서 단원("metadata": { } 행과 "created", "pipelineARN""updated" 필드)을 삭제합니다.

    예를 들어, 구조에서 다음 행을 삭제합니다.

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }
  9. 파일을 저장한 후, update-pipeline 명령을 --cli-input-json 파라미터와 함께 실행하여 위에서 편집한 JSON 파일을 지정합니다. 예를 들어 이라는 파이프라인을 업데이트하려면, 다음과 유사한 명령을 입력합니다.

    중요

    파일 이름 앞에 file://를 포함해야 합니다. 이 명령에 필수적입니다.

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json
  10. 파이프라인 업데이트를 마치면 JSON 파일을 삭제합니다.

자세한 내용은 파이프라인 오류: 다음과 같이 파이프라인 오류를 수신합니다. "github 저장소에 액세스할 수 없음" 또는 "github 저장소에 연결할 수 없음" 단원을 참조하십시오.