Skip to main content

Amazon S3 Storage에서 GitHub Actions 사용

GitHub Enterprise Server에서 GitHub Actions를 사용하도록 설정하고 Amazon S3 스토리지를 사용하여 워크플로 실행에 의해 생성된 데이터를 저장할 수 있습니다.

누가 이 기능을 사용할 수 있나요?

Site administrators can enable GitHub Actions and configure enterprise settings.

GitHub Actions에 대한 외부 스토리지 정보

GitHub Actions는 외부 blob 스토리지를 사용하여 워크플로 실행으로 생성된 데이터터를 저장합니다. 저장된 데이터에는 워크플로 로그, 캐시 및 사용자가 업로드한 빌드 아티팩트가 포함됩니다. 자세한 내용은 “GitHub Enterprise Server용 GitHub Actions 시작”을(를) 참조하세요.

외부 스토리지 공급자에 연결하도록 GitHub Enterprise Server을(를) 구성하는 두 가지 옵션이 있습니다.

  • OpenID Connect(OIDC)
  • 비밀을 사용하는 기존 자격 증명 기반 인증

스토리지 공급자에 대한 중요하고 수명이 긴 자격 증명 비밀을 만들거나, 관리할 필요가 없고 노출될 위험이 있으므로 가능한 경우 OIDC를 사용하는 것이 좋습니다. OIDC를 사용하여 트러스트를 정의한 후 클라우드 스토리지 공급자는 GitHub Enterprise Server 인스턴스에 단기 액세스 토큰을 자동으로 발급합니다. 이 토큰은 자동으로 만료됩니다.

필수 조건

Note

GitHub에서 지원하는 유일한 S3 스토리지 공급자는 AMAZON S3 및 MINIO Gateway for NAS입니다.

GitHub 파트너가 GitHub Enterprise Server에서 GitHub Actions으로 작업하는 것으로 자체 유효성을 검사한 다른 S3 API 호환 스토리지 제품이 있습니다. 자세한 내용은 GHES Storage Partners 리포지토리를 참조하세요.

GitHub 기술 파트너 관계 프로그램을 통해 유효성을 검사한 스토리지 제품의 경우, 스토리지 공급자는 GitHub Actions에서 스토리지 제품을 사용하기 위한 지원 및 설명서를 담당합니다.

GitHub Actions를 사용하도록 설정하기 전에 다음 단계를 완료했는지 확인합니다.

  • 워크플로 실행에서 생성된 데이터를 저장하기 위한 Amazon S3 버킷을 만듭니다.

  • GitHub Actions에 대한 하드웨어 요구 사항을 검토합니다. 자세한 내용은 "GitHub Enterprise Server용 GitHub Actions 시작"을(를) 참조하세요.

  • GitHub Enterprise Server의 도메인에 대해 TLS를 구성해야 합니다. 자세한 내용은 "TLS 구성"을(를) 참조하세요.

    Note

    신뢰할 수 있는 기관에서 서명한 인증서를 사용하여 GitHub Enterprise Server에서 TLS를 구성하는 것이 좋습니다. 자체 서명된 인증서가 작동할 수 있지만 자체 호스팅 실행기에는 추가 구성이 필요하며 프로덕션 환경에는 권장되지 않습니다.

  • GitHub에 HTTP 프록시 서버가 구성되어 있는 경우:

  • HTTP 프록시 제외 목록에 .localhost127.0.0.1, ::1을(를) 이 순서로 추가해야 합니다.

  • 외부 스토리지 위치를 라우팅할 수 없는 경우, 외부 스토리지 URL도 제외 목록에 추가해야 합니다.

프록시 설정 또는 변경에 대한 자세한 내용은 "아웃바운드 웹 프록시 서버 구성"(을)를 참조하세요.

  • 스토리지 공급자에 대한 연결에 OIDC를 사용하는 경우 GitHub Enterprise Server 인스턴스에서 다음 OIDC 토큰 서비스 URL을 공용 인터넷에 노출해야 합니다.

    https://HOSTNAME/_services/token/.well-known/openid-configuration
    https://HOSTNAME/_services/token/.well-known/jwks
    

    이렇게 하면 스토리지 공급자가 인증을 위해 GitHub Enterprise Server 인스턴스에 연결할 수 있습니다.

OIDC를 사용하여 Amazon S3의 GitHub Actions 활성화(권장)

Amazon S3 버킷에 OIDC를 사용하도록 GitHub Enterprise Server을(를) 구성하려면 먼저 Amazon OIDC 공급자를 만든 다음, IAM(ID 및 액세스 관리) 역할을 만들고 마지막으로 공급자와 역할을 사용하여 S3 버킷에 액세스하도록 GitHub Enterprise Server을(를) 구성해야 합니다.

1. Amazon OIDC 공급자 만들기

  1. GitHub Enterprise Server 인스턴스의 지문을 가져옵니다.

    1. 다음 OpenSSL 명령을 사용하여 GitHub Enterprise Server 인스턴스에 대한 SHA1 지문을 가져옵니다. 이때 HOSTNAME을 GitHub Enterprise Server 인스턴스의 공용 호스트 이름으로 바꿉니다.

      Shell
      openssl s_client -connect HOSTNAME:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
      

      예시:

      openssl s_client -connect my-ghes-host.example.com:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
      

      이 명령은 다음 형식으로 지문을 반환합니다.

      SHA1 Fingerprint=AB:12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56
      
    2. 지문 값에서 콜론(:)을 제거하고 나중에 사용할 수 있도록 값을 저장합니다.

      예를 들어 이전 단계에서 반환된 값의 지문은 다음과 같습니다.

      AB1234567890ABCDEF1234567890ABCDEF123456
      
  2. AWS CLI에서 다음 명령을 사용하여 GitHub Enterprise Server 인스턴스에 대한 OIDC 공급자를 만듭니다. HOSTNAME을 GitHub Enterprise Server 인스턴스의 공용 호스트 이름으로 바꾸고 THUMBPRINT를 이전 단계의 지문 값으로 바꿉니다.

    Shell
    aws iam create-open-id-connect-provider \
      --url https://HOSTNAME/_services/token \
      --client-id-list "sts.amazonaws.com" \
      --thumbprint-list "THUMBPRINT"
    

    예시:

    Shell
    aws iam create-open-id-connect-provider \
      --url https://my-ghes-host.example.com/_services/token \
      --client-id-list "sts.amazonaws.com" \
      --thumbprint-list "AB1234567890ABCDEF1234567890ABCDEF123456"
    

    AWS CLI 설치에 대한 자세한 내용은 Amazon 설명서를 참조하세요.

    Warning

    GitHub Enterprise Server 인스턴스에 대한 인증서가 나중에 변경될 경우 OIDC 트러스트가 계속 작동하도록 하려면 Amazon OIDC 공급자의 지문 값을 업데이트해야 합니다.

2. IAM 역할 만들기

  1. AWS 콘솔을 열고 IAM(ID 및 액세스 관리) 서비스로 이동합니다.

  2. 왼쪽 메뉴의 "액세스 관리"에서 역할을 클릭한 다음 역할 만들기를 클릭합니다.

  3. "신뢰할 수 있는 엔터티 선택" 페이지에서 다음 옵션을 입력합니다.

    • "신뢰할 수 있는 엔터티 형식"에서 웹 ID를 클릭합니다.
    • "ID 공급자"의 공급자 선택 드롭다운 메뉴를 사용하여 이전 단계에서 만든 OIDC 공급자를 선택합니다. 해당 공급자의 이름은 HOSTNAME/_services/token입니다. 여기서 HOSTNAME은 GitHub Enterprise Server 인스턴스의 공용 호스트 이름입니다.
    • "대상 그룹"에서 sts.amazonaws.com을 선택합니다.
  4. 다음을 클릭합니다.

  5. "권한 추가" 페이지에서 필터를 사용하여 AmazonS3FullAccess 정책을 찾아 선택합니다.

  6. 다음을 클릭합니다.

  7. "이름, 검토 및 만들기" 페이지에서 역할의 이름을 입력하고 역할 만들기를 클릭합니다.

  8. IAM "역할" 페이지에서 방금 만든 역할을 선택합니다.

  9. 나중에 필요하므로 "요약"에서 역할의 ARN 값을 적어 둡니다.

  10. 트러스트 관계 탭을 클릭한 다음 신뢰 정책 편집을 클릭합니다.

  11. 신뢰 정책을 편집하여 새 sub 클레임을 추가합니다. Condition 값은 다음 예제와 일치해야 합니다. 여기서 HOSTNAME은 GitHub Enterprise Server 인스턴스의 공용 호스트 이름으로 바꿉니다.

    ...
    "Condition": {
      "StringEquals": {
        "HOSTNAME/_services/token:aud": "sts.amazonaws.com",
        "HOSTNAME/_services/token:sub": "HOSTNAME"
      }
    }
    ...
    

    예시:

    ...
    "Condition": {
      "StringEquals": {
        "my-ghes-host.example.com/_services/token:aud": "sts.amazonaws.com",
        "my-ghes-host.example.com/_services/token:sub": "my-ghes-host.example.com"
      }
    }
    ...
    
  12. 정책 업데이트를 클릭합니다.

3. OIDC를 사용하여 Amazon S3에 연결하도록 GitHub Enterprise Server 구성

  1. 페이지의 오른쪽 상단에 있는 GitHub Enterprise Server의 관리 계정에서 을 클릭합니다.

  2. “Site admin”(사이트 관리자) 페이지에 아직 없는 경우 왼쪽 상단에서 Site admin(사이트 관리자)을 클릭합니다.

  3. " 사이트 관리자" 사이드바에서 관리 콘솔 을 클릭합니다.

  4. "설정" 사이드바에서 작업을 클릭합니다.

  5. "GitHub Actions"에서 GitHub Actions 활성화를 선택합니다.

  6. "아티팩트 및 로그 스토리지"의 "Amazon S3" 옆에 있는 설치 프로그램을 클릭합니다.

  7. "인증"에서 OIDC(OpenID Connect) 를 선택하고 스토리지 값을 입력합니다.

    • AWS S3 버킷: S3 버킷의 이름입니다.
    • AWS 역할: 이전 절차에서 만든 역할의 ARN입니다. 예들 들어 arn:aws:iam::123456789:role/my-role-name입니다.
    • AWS 리전: 버킷의 AWS 리전입니다. 예들 들어 us-east-1입니다.
  8. 스토리지 설정 테스트 버튼을 클릭하여 스토리지 설정의 유효성을 확인합니다.

    스토리지 설정의 유효성을 검증할 떄 오류가 있으면 스토리지 공급자와 설정을 확인하고 다시 검사합니다.

  9. "설정" 사이드바에서 설정 저장을 클릭합니다.

    Note

    관리 콘솔에 설정을 저장하면 시스템 서비스가 다시 시작되어 사용자에게 표시되는 가동 중지 시간이 발생할 수 있습니다.

  10. 구성 실행이 완료될 때까지 기다립니다.

액세스 키를 사용하여 Amazon S3 스토리지에서 GitHub Actions 활성화

  1. AWS 콘솔 또는 CLI를 사용하여 스토리지 버킷에 대한 액세스 키를 만듭니다. GitHub Actions에는 버킷에 액세스하는 액세스 키에 대한 다음 권한이 필요합니다.

    • s3:PutObject
    • s3:GetObject
    • s3:ListBucketMultipartUploads
    • s3:ListMultipartUploadParts
    • s3:AbortMultipartUpload
    • s3:DeleteObject
    • s3:ListBucket
    • kms:GenerateDataKey(키 관리 서비스(KMS) 암호화를 사용 설정한 경우)

    AWS 액세스 키를 관리하는 방법에 대한 자세한 내용은 “AWS ID 및 액세스 관리 설명서”를 참조하세요.

  2. 페이지의 오른쪽 상단에 있는 GitHub Enterprise Server의 관리 계정에서 을 클릭합니다.

  3. “Site admin”(사이트 관리자) 페이지에 아직 없는 경우 왼쪽 상단에서 Site admin(사이트 관리자)을 클릭합니다.

  4. " 사이트 관리자" 사이드바에서 관리 콘솔 을 클릭합니다.

  5. "설정" 사이드바에서 작업을 클릭합니다.

  6. "GitHub Actions"에서 GitHub Actions 활성화를 선택합니다.

  7. "아티팩트 및 로그 스토리지"의 "Amazon S3" 옆에 있는 설치 프로그램을 클릭합니다.

  8. "인증"에서 자격 증명 기반을 선택하고 스토리지 버킷의 세부 정보를 입력합니다.

    • AWS 서비스 URL: 버킷의 서비스 URL입니다. 예를 들어 us-west-2 지역에서 S3 버킷을 만든 경우 이 값은 https://s3.us-west-2.amazonaws.com이어야 합니다.

      자세한 내용은 AWS 설명서에서 “AWS 서비스 엔드포인트”를 참조하세요.

    • AWS S3 버킷: S3 버킷의 이름입니다.

    • AWS S3 액세스 키 및 AWS S3 비밀 키: 버킷의 AWS 액세스 키 ID 및 비밀 키입니다.

  9. 스토리지 설정 테스트 버튼을 클릭하여 스토리지 설정의 유효성을 확인합니다.

    스토리지 설정의 유효성을 검증할 떄 오류가 있으면 스토리지 공급자와 설정을 확인하고 다시 검사합니다.

  10. "설정" 사이드바에서 설정 저장을 클릭합니다.

    Note

    관리 콘솔에 설정을 저장하면 시스템 서비스가 다시 시작되어 사용자에게 표시되는 가동 중지 시간이 발생할 수 있습니다.

  11. 구성 실행이 완료될 때까지 기다립니다.

다음 단계

구성 실행이 성공적으로 완료되면 GitHub Actions가 GitHub에서 사용 설정됩니다. GitHub Actions 액세스 권한 관리 및 자체 호스팅 실행기 추가와 같은 다음 단계는 "GitHub Enterprise Server용 GitHub Actions 시작"으로 돌아갑니다.