GitLab Dedicated 네트워크 액세스 및 보안
Offering: GitLab Dedicated for Government
이 설정을 사용하여 GitLab Dedicated 인스턴스가 인터넷 및 개인 인프라에 연결하는 방식을 제어합니다. 기본 your-tenant.gitlab-dedicated.com 대신 GitLab Dedicated 인스턴스에 액세스하기 위한 사용자 정의 도메인을 구성할 수 있습니다.
이 설정을 사용하여 GitLab Dedicated 인스턴스가 인터넷 및 개인 인프라에 연결하는 방식을 제어합니다. 사용자 정의 도메인 구성, 외부 서비스를 위한 인증 기관 관리, AWS PrivateLink를 통한 개인 네트워크 연결 설정, IP 허용 목록으로 액세스 제한, 인스턴스에서 사용하는 아웃바운드 IP 확인이 가능합니다.
사용자 정의 도메인#
기본 your-tenant.gitlab-dedicated.com 대신 GitLab Dedicated 인스턴스에 액세스하기 위한 사용자 정의 도메인을 구성할 수 있습니다.
사용자 정의 도메인을 추가할 때:
- 도메인이 인스턴스에 액세스하는 데 사용되는 외부 URL에 포함됩니다.
- 기본
tenant.gitlab-dedicated.com도메인을 사용하여 인스턴스에 연결하는 것은 더 이상 사용할 수 없습니다.
GitLab은 Let's Encrypt를 사용하여 사용자 정의 도메인에 대한 SSL/TLS 인증서를 자동으로 관리합니다. Let's Encrypt는 HTTP-01 챌린지를 사용하여 도메인 소유권을 확인하며, 이를 위해 다음이 필요합니다:
- CNAME 레코드가 DNS를 통해 공개적으로 확인 가능해야 합니다.
- 90일마다 자동 인증서 갱신을 위한 동일한 공개 확인 프로세스.
AWS PrivateLink와 같은 개인 네트워킹으로 구성된 인스턴스의 경우, 다른 모든 액세스가 개인 네트워크로 제한되더라도 공개 DNS 확인은 인증서 관리가 올바르게 작동하도록 보장합니다.
GitLab Dedicated는 두 가지 구성 방법을 통해 사용자 정의 도메인을 지원합니다:
- 표준 구성: CNAME 레코드와 Let's Encrypt 인증서를 사용합니다. 자체 DNS 레코드를 구성하고 지원을 통해 도메인 활성화를 요청합니다.
- Cloudflare 보안 구성: NS 레코드와 Let's Encrypt 인증서를 사용합니다. GitLab이 DNS 구성 세부 정보를 제공하고 지원과 협력하여 구현합니다.
어떤 구성 방법이 인스턴스에 적용되는지 결정하려면 고객 성공 관리자에게 문의하세요.
사용자 정의 도메인 세부 정보 보기#
Custom domains 섹션은 GitLab Dedicated 인스턴스의 활성 도메인 구성을 표시합니다:
- GitLab instance domain: GitLab 인스턴스의 사용자 정의 도메인.
- Registry domain: 컨테이너 레지스트리의 사용자 정의 도메인.
- KAS domain: Kubernetes(KAS)용 GitLab 에이전트 서버의 사용자 정의 도메인.
다음을 위해 이 정보를 사용합니다:
- 현재 사용자 정의 도메인 구성 확인.
- 외부 통합을 위한 도메인 참조.
- DNS 관리를 위한 구성 세부 정보 복사.
사용자 정의 도메인 세부 정보를 보려면:
- Switchboard에 로그인합니다.
- Configuration 탭을 선택합니다.
- Custom domains를 확장합니다.
DNSSEC 세부 정보#
사용자 정의 도메인이 Cloudflare 웹 애플리케이션 방화벽(WAF)으로 구성된 경우, Switchboard는 FedRAMP 규정 준수를 위한 Cloudflare 네임서버 및 DNSSEC 파라미터를 포함한 추가 구성 세부 정보를 표시합니다.
추가 세부 정보는 다음을 포함합니다:
- Cloudflare 네임서버: Cloudflare 관리 도메인에 대한 DNS 네임서버.
- 키 태그: DNSSEC 키의 숫자 식별자.
- 알고리즘: 사용된 암호화 알고리즘(일반적으로 SHA-256이 있는 ECDSA P-256의 경우 13).
- 다이제스트 유형: 사용된 해시 알고리즘(일반적으로 SHA-256의 경우 2).
- 다이제스트: 공개 키의 암호화 해시.
DNS 공급자와의 DNS 위임 및 DNSSEC 유효성 검사를 구성하는 데 이러한 값을 사용합니다.
표준 구성#
이 구성을 사용하면 도메인이 CNAME 레코드를 사용하여 GitLab 인스턴스에 직접 연결됩니다. 자체 DNS 레코드를 구성하고 지원을 통해 도메인 활성화를 요청합니다.
SSL 인증서 관리를 위해 사용자 정의 도메인은 개인 네트워크를 통해 인스턴스에 액세스하더라도 공개 인터넷에서 액세스할 수 있어야 합니다.
DNS 레코드 구성#
필수 조건:
- 도메인 호스트의 DNS 설정에 대한 액세스.
DNS 레코드를 구성하려면:
-
도메인 호스트의 웹사이트에 로그인합니다.
-
DNS 설정으로 이동합니다.
-
사용자 정의 도메인을 GitLab Dedicated 인스턴스로 가리키는
CNAME레코드를 추가합니다. 예를 들어:gitlab.my-company.com. CNAME my-tenant.gitlab-dedicated.com -
선택 사항. 도메인에 기존
CAA레코드가 있는 경우 Let's Encrypt를 유효한 인증 기관으로 포함하도록 업데이트합니다. 예를 들어:gitlab.my-company.com. IN CAA 0 issue "pki.goog" gitlab.my-company.com. IN CAA 0 issue "letsencrypt.org"CAA레코드는 도메인에 대한 인증서를 발급할 수 있는 인증 기관을 정의합니다. -
변경 사항을 저장하고 DNS 변경 사항이 적용될 때까지 기다립니다.
사용자 정의 도메인을 사용하는 동안 DNS 레코드를 유지합니다.
사용자 정의 도메인 활성화#
필수 조건:
- DNS 레코드를 구성했습니다.
사용자 정의 도메인을 활성화하려면:
- 지원 티켓을 제출합니다.
- 지원 티켓에서 다음을 지정합니다:
- 사용자 정의 도메인 이름. 예를 들어
gitlab.company.com. - 컨테이너 레지스트리 및 Kubernetes용 GitLab 에이전트 서버에 사용자 정의 도메인이 필요한 경우 사용하려는 도메인 이름을 포함합니다.
예를 들어
registry.company.com및kas.company.com.
- 사용자 정의 도메인 이름. 예를 들어
Cloudflare 보안 구성#
이 구성을 사용하면 도메인이 NS 레코드를 사용하여 GitLab에 위임되어야 하며, 이를 통해 트래픽이 Cloudflare 웹 애플리케이션 방화벽(WAF)을 통해 라우팅됩니다. Cloudflare는 도메인의 모든 DNS 설정을 관리하고 향상된 보안 기능을 제공합니다.
이 방법은 고객 성공 관리자와의 협력이 필요합니다. 구성은 인스턴스의 유지보수 기간 동안 적용됩니다.
사용자 정의 도메인 요청#
사용자 정의 도메인을 요청하려면:
- 지원 티켓을 제출합니다.
- 지원 티켓에서 다음을 지정합니다:
- 사용자 정의 도메인 이름. 예를 들어
gitlab.company.com. - 컨테이너 레지스트리 및 Kubernetes용 GitLab 에이전트 서버에 사용자 정의 도메인이 필요한 경우 사용하려는 도메인 이름을 포함합니다.
예를 들어
registry.company.com및kas.company.com. - 규정 준수 요구 사항. 예를 들어 FedRAMP.
- 사용자 정의 도메인 이름. 예를 들어
GitLab은 Cloudflare에서 도메인을 구성하고 다음을 제공합니다:
name1.ns.cloudflare.com및name2.ns.cloudflare.com과 같은 두 개의 Cloudflare 네임서버.- DNSSEC 파라미터(FedRAMP 고객 전용), 다음을 포함:
- 키 태그: 숫자 식별자 (GitLab에서 제공)
- 알고리즘: 일반적으로 13(ECDSA P-256 with SHA-256) 또는 8(RSA/SHA-256)
- 다이제스트 유형: 일반적으로 2(SHA-256)
- 다이제스트: 공개 키의 암호화 해시 (GitLab에서 제공)
DNS 레코드 구성#
DNS 공급자에서 서브도메인을 Cloudflare에 위임하도록 NS 레코드를 구성합니다.
필수 조건:
- 도메인 호스트의 DNS 설정에 대한 액세스.
- GitLab이 네임서버와 DNSSEC 파라미터를 제공했습니다(해당하는 경우).
DNS 레코드를 구성하려면:
-
도메인 호스트의 웹사이트에 로그인합니다.
-
DNS 설정으로 이동합니다.
-
GitLab에서 제공한 네임서버를 사용하여 NS 레코드를 만듭니다. 예를 들어:
gitlab.company.com. NS name1.ns.cloudflare.com. gitlab.company.com. NS name2.ns.cloudflare.com. -
동일한 서브도메인에 대해 충돌하는 A, AAAA 또는 CNAME 레코드를 제거합니다.
-
FedRAMP 고객 전용. GitLab에서 제공한 값을 사용하여 DS 레코드를 추가합니다:
gitlab.company.com. DS [Key Tag] [Algorithm] [Digest Type] [Digest]예를 들어:
gitlab.company.com. DS 12345 13 2 A1B2C3D4E5F6... -
변경 사항을 저장합니다. DNS 변경 사항은 적용되는 데 최대 48시간이 걸릴 수 있습니다.
-
구성을 확인합니다:
# 네임서버 위임 확인 dig +short NS gitlab.company.com # DNS 확인 확인 dig gitlab.company.com # DNSSEC 확인 (구성된 경우) dig +dnssec gitlab.company.com -
DNS 구성이 완료되었음을 지원 티켓을 통해 GitLab에 알립니다.
GitLab은 다음을 수행합니다:
- DNS 위임을 확인합니다.
- SSL/TLS 인증서를 구성합니다.
- 사용자 정의 도메인이 활성화된 시기를 확인합니다.
컨테이너 레지스트리 네트워크 액세스#
컨테이너 레지스트리 FQDN(완전 정규화된 도메인 이름)은 인스턴스의 컨테이너 레지스트리 데이터를 저장하는 S3 버킷을 식별합니다.
컨테이너 레지스트리 FQDN 보기#
S3 버킷의 IP 주소는 시간이 지남에 따라 변경될 수 있으므로 IP 주소 대신 FQDN을 사용하여 레지스트리 스토리지 위치를 참조하는 방화벽 규칙 및 네트워크 정책을 구성합니다.
컨테이너 레지스트리 FQDN을 보려면:
- Switchboard에 로그인합니다.
- Configuration 탭을 선택합니다.
- Resource access를 확장합니다.
- Container registry에서 Copy to clipboard([copy-to-clipboard])를 선택합니다.
외부 서비스에 대한 사용자 정의 인증 기관#
GitLab Dedicated는 HTTPS를 통해 외부 서비스에 연결할 때 인증서를 검증합니다. 기본적으로 GitLab Dedicated는 공개적으로 인식된 인증 기관만 신뢰하고 신뢰할 수 없는 인증 기관의 인증서가 있는 서비스에 대한 연결을 거부합니다.
외부 서비스에서 개인 또는 내부 인증 기관의 인증서를 사용하는 경우 해당 인증 기관을 GitLab Dedicated 인스턴스에 추가해야 합니다.
다음의 경우 사용자 정의 인증 기관이 필요할 수 있습니다:
- 내부 웹훅 엔드포인트에 연결.
- 개인 컨테이너 레지스트리에서 이미지 가져오기.
- 기업 공개 키 인프라 뒤의 온프레미스 서비스와 통합.
사용자 정의 인증서 추가#
인증서 체인 블록(단일 텍스트 블록의 여러 인증서)은 지원되지 않습니다. 체인에 여러 인증서가 있는 경우 각 인증서를 별도로 추가합니다.
사용자 정의 인증서를 추가하려면:
- Switchboard에 로그인합니다.
- 페이지 상단에서 Configuration을 선택합니다.
- Custom certificate authorities를 확장합니다.
- + Add Certificate를 선택합니다.
- 텍스트 박스에 단일 인증서를 붙여넣습니다.
-----BEGIN CERTIFICATE-----및-----END CERTIFICATE-----줄을 포함합니다. - Save를 선택합니다.
- 체인의 각 추가 인증서에 대해 4-6단계를 반복합니다.
- 페이지 상단으로 스크롤하여 변경 사항을 즉시 적용할지 다음 유지보수 창 동안 적용할지 선택합니다.
Switchboard를 사용하여 사용자 정의 인증서를 추가할 수 없는 경우 지원 티켓을 열고 각 사용자 정의 인증서를 별도의 파일로 첨부합니다.
AWS PrivateLink 연결#
AWS PrivateLink를 사용하면 트래픽이 공개 인터넷을 통해 라우팅되지 않고 AWS 인프라와 GitLab Dedicated 인스턴스 간에 개인 네트워크 연결이 가능합니다. 모든 트래픽이 AWS 네트워크 내에 유지되므로 외부 위협에 대한 노출이 줄어들고 개인 네트워킹에 대한 규정 준수 요구 사항을 충족하는 데 도움이 됩니다.
GitLab Dedicated는 두 가지 유형의 PrivateLink 연결을 지원합니다:
- 인바운드 PrivateLink 연결: VPC의 사용자 및 애플리케이션이 GitLab Dedicated 인스턴스에 개인적으로 연결됩니다. 공개 인터넷을 통해 인스턴스에 액세스할 수 없도록 제한하려는 경우 사용합니다.
- 아웃바운드 PrivateLink 연결: GitLab Dedicated 인스턴스와 호스팅 러너가 VPC에서 실행 중인 서비스에 개인적으로 연결됩니다. 웹훅, 프로젝트 미러링, 시크릿 관리자, 또는 인프라로의 배포에 사용합니다.
PrivateLink 연결은 GitLab Dedicated 인스턴스와 동일한 AWS 리전에 있어야 하며, 기본 및 보조 AWS 리전에서만 엔드포인트 서비스를 만들 수 있습니다.
AWS PrivateLink에 대한 자세한 내용은 AWS PrivateLink란 무엇인가?를 참조하세요.
인바운드 PrivateLink 연결#
인바운드 PrivateLink 연결을 사용하면 VPC의 사용자 및 애플리케이션이 GitLab Dedicated 인스턴스에 개인적으로 연결할 수 있습니다.
엔드포인트 서비스를 만들 때 액세스를 제어하는 IAM 주체를 지정합니다. 지정한 IAM 주체만 인스턴스에 연결하기 위한 VPC 엔드포인트를 만들 수 있습니다.
엔드포인트 서비스는 온보딩 중에 선택하거나 무작위로 선택되는 두 개의 가용 영역에서 사용 가능합니다.
인바운드 PrivateLink 연결 만들기#
필수 조건:
- VPC가 GitLab Dedicated 인스턴스와 동일한 리전에 있어야 합니다.
- IAM 주체는 GitLab에서 제공한 엔드포인트 서비스를 검색하고, 인터페이스 VPC 엔드포인트를 만들고, private DNS가 활성화된 경우 Route 53 프라이빗 호스팅 영역과 연결할 권한이 있어야 합니다.
- 역할 이름만 있는 IAM 주체를 사용합니다. 역할 경로를 포함하지 마세요.
- 유효:
arn:aws:iam::AWS_ACCOUNT_ID:role/RoleName - 유효하지 않음:
arn:aws:iam::AWS_ACCOUNT_ID:role/somepath/AnotherRoleName
- 유효:
인바운드 PrivateLink 연결을 만들려면:
-
Switchboard에 로그인합니다.
-
페이지 상단에서 Configuration을 선택합니다.
-
Inbound private connections를 확장합니다.
-
Add endpoint service를 선택합니다. 사용 가능한 모든 리전에 이미 엔드포인트 서비스가 있는 경우 이 버튼을 사용할 수 없습니다.
-
리전을 선택합니다.
-
VPC 엔드포인트를 설정하는 AWS 조직의 AWS 사용자 또는 역할에 대한 IAM 주체를 추가합니다. IAM 주체는 IAM 역할 주체 또는 IAM 사용자 주체여야 합니다. VPC 엔드포인트를 만드는 역할 또는 사용자에게 다음 권한이 있는 정책을 연결합니다:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GitLabDedicatedInboundPrivateLink", "Effect": "Allow", "Action": [ "ec2:CreateVpcEndpoint", "ec2:DescribeVpcEndpointServices", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcs", "route53:AssociateVPCWithHostedZone" ], "Resource": "*" } ] } -
Save를 선택합니다. GitLab이 엔드포인트 서비스를 만들고 프라이빗 DNS를 위한 도메인 확인을 처리합니다. 서비스 엔드포인트 이름이 Configuration 페이지에서 사용 가능해집니다.
-
AWS 계정에서 VPC에 엔드포인트 인터페이스를 만듭니다.
-
다음 설정으로 엔드포인트 인터페이스를 구성합니다:
- Service endpoint name: Switchboard의 Configuration 페이지에서 이름을 사용합니다.
- Private DNS names enabled: Yes를 선택합니다.
- Subnets: 일치하는 모든 서브넷을 선택합니다.
-
온보딩 중에 제공된 인스턴스 URL을 사용하여 VPC에서 GitLab Dedicated 인스턴스에 연결합니다.
terraform-inbound-privatelink Terraform 모듈을 사용하여 AWS VPC 엔드포인트 설정을 자동화하고 DNS를 전환할 때 필요한 Route 53 레코드를 출력할 수 있습니다.
KAS 및 레지스트리를 위한 DNS 구성#
개인 네트워크를 통해 KAS(Kubernetes용 GitLab 에이전트) 및 컨테이너 레지스트리에 액세스하려면 VPC에 추가 DNS 구성을 만듭니다.
필수 조건:
- 인바운드 PrivateLink 연결을 구성했습니다.
- AWS 계정에서 Route 53 프라이빗 호스팅 영역을 만들 권한이 있습니다.
KAS 및 레지스트리를 위한 DNS를 구성하려면:
-
AWS 콘솔에서
gitlab-dedicated.com에 대한 프라이빗 호스팅 영역을 만들고 인바운드 PrivateLink 연결이 있는 VPC와 연결합니다. -
프라이빗 호스팅 영역을 만든 후 다음 DNS 레코드를 추가합니다(
example을 인스턴스 이름으로 교체):-
GitLab Dedicated 인스턴스에 대한
A레코드를 만듭니다:-
전체 인스턴스 도메인(예:
example.gitlab-dedicated.com)을 VPC 엔드포인트로 Alias로 확인하도록 구성합니다. -
가용 영역 참조가 없는 VPC 엔드포인트를 선택합니다.

-
-
KAS와 레지스트리 모두가 GitLab Dedicated 인스턴스 도메인(
example.gitlab-dedicated.com)으로 확인되도록CNAME레코드를 만듭니다:kas.example.gitlab-dedicated.comregistry.example.gitlab-dedicated.com
-
-
연결을 확인하려면 VPC의 리소스에서 다음 명령을 실행합니다:
nslookup kas.example.gitlab-dedicated.com nslookup registry.example.gitlab-dedicated.com nslookup example.gitlab-dedicated.com모든 명령이 VPC 내의 개인 IP 주소로 확인되어야 합니다.
이 구성은 특정 IP 주소 대신 VPC 엔드포인트 인터페이스를 사용하므로 IP 주소가 변경되어도 안정적입니다.
GitLab Pages를 위한 DNS 구성#
개인 네트워크를 통해 GitLab Pages에 액세스하려면 VPC에 추가 DNS 구성을 만듭니다.
GitLab Pages를 위한 DNS를 구성하려면:
- AWS 콘솔에서
<tenant_name>.gitlab-dedicated.site에 대한 프라이빗 호스팅 영역을 만들고 인바운드 PrivateLink 연결이 있는 VPC와 연결합니다. - 프라이빗 호스팅 영역을 만든 후 다음 DNS 레코드를 추가합니다:
- VPC 엔드포인트에 대한 Apex
AAlias 레코드를 만듭니다. <tenant_name>.gitlab-dedicated.site를 가리키는*.<tenant_name>.gitlab-dedicated.site에 대한 와일드카드CNAME을 만듭니다.
- VPC 엔드포인트에 대한 Apex
아웃바운드 PrivateLink 연결#
아웃바운드 PrivateLink 연결을 사용하면 GitLab Dedicated 인스턴스와 호스팅 러너가 트래픽을 공개 인터넷에 노출하지 않고 VPC에서 실행 중인 서비스와 개인적으로 통신할 수 있습니다.
웹훅 전송, 프로젝트 및 저장소 가져오기 또는 미러링, 호스팅 러너에게 사용자 정의 시크릿 관리자, 아티팩트, 작업 이미지, 인프라로의 배포에 대한 액세스를 제공하는 데 아웃바운드 PrivateLink 연결을 사용합니다.
리전당 최대 10개의 아웃바운드 PrivateLink 연결을 만들 수 있습니다. 단일 연결 뒤에 10개 이상의 백엔드 서비스를 통합하려면 terraform-outbound-proxy Terraform 모듈을 사용하여 TLS 패스스루, HTTP 라우팅 및 SMTP 포워딩이 있는 고가용성 NGINX 역방향 프록시를 배포할 수 있습니다.
아웃바운드 PrivateLink 연결 추가#
필수 조건:
-
내부 서비스에 대한 엔드포인트 서비스를 만들고 서비스 이름과 private DNS 활성화 여부를 기록합니다.
-
인스턴스가 배포된 가용 영역(AZ)의 네트워크 로드 밸런서(NLB)를 구성합니다. 구성된 AZ를 사용하거나(Switchboard Overview 페이지에 표시됨) 리전의 모든 AZ에서 NLB를 활성화합니다.
-
권장. Acceptance required를 No로 설정합니다. Yes로 설정하면 연결이 시작된 후 수동으로 수락해야 하며 다음 유지보수 창까지 Switchboard에서 상태가 Pending으로 표시됩니다.
[!note] Acceptance required를 Yes로 설정하면 Switchboard가 링크가 수락된 시기를 정확하게 확인할 수 없습니다. 링크를 수동으로 수락한 후 상태는 다음 예정된 유지보수까지 Active 대신 Pending으로 표시됩니다. 유지보수 후 링크 상태가 새로 고쳐지고 연결됨으로 표시됩니다.
Switchboard로 아웃바운드 PrivateLink 연결을 추가하려면:
- Switchboard에 로그인합니다.
- 페이지 상단에서 Configuration을 선택합니다.
- Outbound private connections를 확장합니다.
- Outbound private link IAM principal에서 ARN을 복사하여 엔드포인트 서비스의 Allowed Principals 목록에 추가합니다. 자세한 내용은 권한 관리를 참조하세요.
- 필드를 완성합니다.
- 엔드포인트 서비스를 추가하려면 Add endpoint service를 선택합니다. 각 리전에 최대 10개의 엔드포인트 서비스를 추가할 수 있습니다. 리전을 저장하려면 최소 하나의 엔드포인트 서비스가 필요합니다.
- Save를 선택합니다.
- 선택 사항. 두 번째 리전에 아웃바운드 PrivateLink 연결을 추가하려면 Add outbound connection을 선택하고 이전 단계를 반복합니다.
지원 요청으로 아웃바운드 PrivateLink 연결을 추가하려면:
- 지원 티켓을 열고 서비스 엔드포인트 이름을 제공합니다. GitLab이 엔드포인트 서비스에 대한 연결을 시작하는 IAM 역할의 ARN을 제공합니다. AWS 문서에 설명된 대로 엔드포인트 서비스의 Allowed Principals 목록에 이 ARN을 추가합니다.
- 엔드포인트를 사용하여 서비스에 연결하려면 GitLab Dedicated에 DNS 이름이 필요합니다. PrivateLink는 내부 이름을 자동으로 만들지만 대부분의 용도에는 유용하지 않습니다. 다음 옵션 중 하나를 선택합니다:
- 엔드포인트 서비스에서 프라이빗 DNS 이름을 활성화하고 필요한 유효성 검사를 수행한 후 이 옵션을 사용하고 있음을 지원 티켓에서 GitLab에 알립니다. Acceptance required가 Yes로 설정된 경우 GitLab이 Private DNS 없이 연결을 시작하고 확인을 기다린 후 Private DNS를 사용하도록 연결을 업데이트할 수 있도록 지원 티켓에 이를 기록합니다.
- GitLab Dedicated는 Dedicated AWS 계정 내에서 프라이빗 호스팅 영역(PHZ)을 관리하고 DNS 이름을 엔드포인트에 별칭으로 지정할 수 있습니다. 자세한 내용은 프라이빗 호스팅 영역을 참조하세요.
GitLab은 제공한 서비스 이름을 기반으로 필요한 엔드포인트 인터페이스를 만들도록 인스턴스를 구성합니다. PrivateLink는 일치하는 아웃바운드 연결을 VPC로 전달합니다.
아웃바운드 PrivateLink 연결 삭제#
- Switchboard에 로그인합니다.
- 페이지 상단에서 Configuration을 선택합니다.
- Outbound private connections를 확장합니다.
- 삭제하려는 아웃바운드 PrivateLink 연결로 이동하여 Delete([remove])를 선택합니다.
- Delete를 선택합니다.
- 선택 사항. 리전의 모든 링크를 삭제하려면 리전 헤더에서 Delete([remove])를 선택합니다. 이렇게 하면 리전 구성도 삭제됩니다.
프라이빗 호스팅 영역#
프라이빗 호스팅 영역(PHZ)은 GitLab Dedicated 인스턴스의 네트워크에서 확인되는 사용자 정의 DNS 레코드(예: A, CNAME 또는 기타 레코드 유형)를 만듭니다.
다음의 경우 PHZ를 사용합니다:
- 리버스 프록시를 실행하여 여러 서비스에 연결할 때와 같이 단일 엔드포인트를 사용하는 여러 DNS 레코드(예: A 또는 CNAME 레코드)를 만들고 싶을 때.
- 공개 DNS로 확인할 수 없는 개인 도메인을 사용할 때.
PHZ는 일반적으로 역방향 PrivateLink와 함께 사용하여 AWS 생성 엔드포인트 이름 대신 읽을 수 있는 도메인 이름을 만듭니다. 예를 들어 vpce-0987654321fedcba0-k99y1abc.vpce-svc-0a123bcd4e5f678gh.eu-west-1.vpce.amazonaws.com 대신 alpha.beta.tenant.gitlab-dedicated.com을 사용할 수 있습니다.
경우에 따라 PHZ를 사용하여 공개적으로 액세스 가능한 DNS 이름으로 확인되는 DNS 레코드를 만들 수도 있습니다. 예를 들어 내부 시스템이 개인 이름을 통해 서비스에 액세스해야 할 때 공개 엔드포인트로 확인되는 내부 DNS 이름을 만들 수 있습니다.
프라이빗 호스팅 영역에 대한 변경은 이러한 레코드를 사용하는 서비스를 최대 5분 동안 중단시킬 수 있습니다.
PHZ 도메인 구조#
PHZ 레코드는 다른 유형의 대상을 가리킬 수 있습니다. 가장 일반적이고 권장되는 방법은 AWS VPC 엔드포인트의 DNS 이름을 가리키는 것입니다.
VPC 엔드포인트와 함께 GitLab Dedicated 인스턴스의 도메인을 Alias의 일부로 사용할 때 기본 도메인 앞에 최소 하나의 서브도메인을 포함해야 합니다. 예를 들어:
- 유효한 PHZ 항목:
subdomain1.<your-tenant-id>.gitlab-dedicated.com. - 유효하지 않은 PHZ 항목:
<your-tenant-id>.gitlab-dedicated.com.
사용자 정의 도메인의 경우 phz-entry.phz-name.com 형식으로 PHZ 이름과 PHZ 항목을 제공해야 합니다.
PHZ 레코드가 VPC 엔드포인트가 아닌 DNS 이름을 가리키는 경우 기본 도메인 앞에 최소 두 개의 서브도메인을 포함해야 합니다. 예를 들어: subdomain1.subdomain2.tenant.gitlab-dedicated.com.
Switchboard로 프라이빗 호스팅 영역 추가#
프라이빗 호스팅 영역을 추가하려면:
- Switchboard에 로그인합니다.
- 페이지 상단에서 Configuration을 선택합니다.
- Private hosted zones를 확장합니다.
- Add private hosted zone entry를 선택합니다.
- 필드를 완성합니다.
- Hostname 필드에 프라이빗 호스팅 영역(PHZ) 항목을 입력합니다.
- Link type에 대해 다음 중 하나를 선택합니다:
- 아웃바운드 PrivateLink 연결 PHZ 항목의 경우 드롭다운 목록에서 엔드포인트 서비스를 선택합니다.
Available또는Pending Acceptance상태의 연결만 표시됩니다. - 다른 PHZ 항목의 경우 DNS Alias 목록을 제공합니다.
- 아웃바운드 PrivateLink 연결 PHZ 항목의 경우 드롭다운 목록에서 엔드포인트 서비스를 선택합니다.
- Save를 선택합니다. PHZ 항목과 모든 Alias가 목록에 표시됩니다.
- 페이지 상단으로 스크롤하여 변경 사항을 즉시 적용할지 다음 유지보수 창 동안 적용할지 선택합니다.
지원 요청으로 프라이빗 호스팅 영역 추가#
Switchboard를 사용하여 프라이빗 호스팅 영역을 추가할 수 없는 경우 지원 티켓을 열고 아웃바운드 PrivateLink 연결의 엔드포인트 서비스로 확인해야 하는 DNS 이름 목록을 제공합니다. 목록은 필요에 따라 업데이트할 수 있습니다.
IP 허용 목록#
IP 허용 목록을 사용하여 인스턴스에 액세스할 수 있는 IP 주소를 제어합니다.
IP 허용 목록을 활성화하면 허용 목록에 없는 IP 주소가 차단되고
인스턴스에 액세스하려고 할 때 HTTP 403 Forbidden 응답을 받습니다.
Switchboard를 사용하여 IP 허용 목록을 구성 및 관리하거나 Switchboard를 사용할 수 없는 경우 지원 요청을 제출합니다.
Switchboard로 허용 목록에 IP 주소 추가#
허용 목록에 IP 주소를 추가하려면:
-
Switchboard에 로그인합니다.
-
페이지 상단에서 Configuration을 선택합니다.
-
IP allowlist를 확장하고 IP allowlist를 선택하여 IP 허용 목록 페이지로 이동합니다.
-
IP 허용 목록을 활성화하려면 수직 줄임표(⋮)를 선택하고 Enabled를 선택합니다.
-
다음 중 하나를 수행합니다:
- 단일 IP 주소를 추가하려면:
- Add IP address를 선택합니다.
- IP address 텍스트 박스에 다음 중 하나를 입력합니다:
- 단일 IPv4 주소(예:
192.168.1.1). - CIDR 표기법의 IPv4 주소 범위(예:
192.168.1.0/24).
- 단일 IPv4 주소(예:
- Description 텍스트 박스에 설명을 입력합니다.
- Add를 선택합니다.
- 여러 IP 주소를 가져오려면:
- Import를 선택합니다.
- CSV 파일을 업로드하거나 IP 주소 목록을 붙여넣습니다.
- Continue를 선택합니다.
- 유효하지 않거나 중복된 항목을 수정한 후 Continue를 선택합니다.
- 변경 사항을 검토하고 Import를 선택합니다.
-
페이지 상단에서 변경 사항을 즉시 적용할지 다음 유지보수 창 동안 적용할지 선택합니다.
Switchboard로 허용 목록에서 IP 주소 삭제#
-
Switchboard에 로그인합니다.
-
페이지 상단에서 Configuration을 선택합니다.
-
IP allowlist를 확장하고 IP allowlist를 선택하여 IP 허용 목록 페이지로 이동합니다.
-
다음 중 하나를 수행합니다:
- 단일 IP 주소를 삭제하려면:
- 제거하려는 IP 주소 옆에서 휴지통 아이콘([remove])을 선택합니다.
- Delete IP address를 선택합니다.
- 여러 IP 주소를 삭제하려면:
- 삭제하려는 IP 주소의 체크박스를 선택합니다.
- 현재 페이지의 모든 IP 주소를 선택하려면 헤더 행의 체크박스를 선택합니다.
- IP 주소 테이블 위에서 Delete를 선택합니다.
- Delete를 선택하여 확인합니다.
-
페이지 상단에서 변경 사항을 즉시 적용할지 다음 유지보수 창 동안 적용할지 선택합니다.
지원 요청으로 허용 목록에 IP 추가#
Switchboard를 사용하여 IP 허용 목록을 업데이트할 수 없는 경우 지원 티켓을 열고 인스턴스에 액세스할 수 있는 IP 주소를 쉼표로 구분된 목록으로 지정합니다.
IP 허용 목록에 대해 OpenID Connect 활성화#
GitLab을 OpenID Connect ID 공급자로 사용하려면 OpenID Connect 확인 엔드포인트에 인터넷 액세스가 필요합니다.
IP 허용 목록을 유지하면서 OpenID Connect 엔드포인트에 대한 액세스를 활성화하려면:
- 지원 티켓에서 OpenID Connect 엔드포인트에 대한 액세스를 허용하도록 요청합니다.
구성은 다음 유지보수 창 동안 적용됩니다.
IP 허용 목록에 대해 SCIM 프로비저닝 활성화#
외부 ID 공급자와 함께 SCIM을 사용하여 사용자를 자동으로 프로비저닝하고 관리할 수 있습니다. SCIM을 사용하려면 ID 공급자가 인스턴스 SCIM API 엔드포인트에 액세스할 수 있어야 합니다. 기본적으로 IP 허용 목록은 이러한 엔드포인트에 대한 통신을 차단합니다.
IP 허용 목록을 유지하면서 SCIM을 활성화하려면:
- 지원 티켓에서 SCIM 엔드포인트를 인터넷에 활성화하도록 요청합니다.
구성은 다음 유지보수 창 동안 적용됩니다.
NAT 게이트웨이 IP 주소#
NAT 게이트웨이 IP 주소는 인스턴스가 외부 서비스에 연결할 때 사용하는 아웃바운드 IP입니다. 이 IP는 일반적으로 일관성을 유지하지만 재해 복구 중에 GitLab이 인스턴스를 재구축하면 변경될 수 있습니다.
이 IP 주소를 사용하여 웹훅 수신자를 구성하고 인스턴스에서의 연결을 수락하도록 외부 서비스에 대한 허용 목록을 설정합니다.
NAT 게이트웨이 IP 주소를 보려면:
- Switchboard에 로그인합니다.
- Configuration 탭을 선택합니다.
- Resource access를 확장합니다.
- NAT gateways에서 Copy to clipboard([copy-to-clipboard])를 선택합니다.
AWS PrivateLink 연결 트러블슈팅#
AWS PrivateLink 연결 작업 시 다음 문제가 발생할 수 있습니다.
오류: Service name could not be verified#
인바운드 PrivateLink 연결을 위한 VPC 엔드포인트를 만들 때
Service name could not be verified라는 오류가 발생할 수 있습니다.
이 문제는 지원 티켓에 제공된 사용자 정의 IAM 역할이 AWS 계정에 필요한 권한 또는 신뢰 정책이 구성되지 않은 경우에 발생합니다.
이 문제를 해결하려면:
-
지원 티켓에서 GitLab에 제공된 사용자 정의 IAM 역할을 가정할 수 있는지 확인합니다.
-
사용자 정의 역할에 이를 가정할 수 있는 신뢰 정책이 있는지 확인합니다. 예를 들어:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::CONSUMER_ACCOUNT_ID:user/user-name" }, "Action": "sts:AssumeRole" } ] } -
사용자 정의 역할에 VPC 엔드포인트 및 EC2 작업을 허용하는 권한 정책이 있는지 확인합니다. 예를 들어:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "vpce:*", "Resource": "*" }, { "Sid": "Statement1", "Effect": "Allow", "Action": [ "ec2:CreateVpcEndpoint", "ec2:DescribeVpcEndpointServices", "ec2:DescribeVpcEndpoints" ], "Resource": "*" } ] } -
사용자 정의 역할을 사용하여 AWS 콘솔 또는 CLI에서 VPC 엔드포인트 만들기를 재시도합니다.
아웃바운드 PrivateLink 연결 실패#
아웃바운드 PrivateLink 연결이 작동하지 않는 경우 다음을 확인합니다:
- 네트워크 로드 밸런서(NLB)에서 교차 영역 로드 밸런싱이 켜져 있는지 확인합니다.
- 적절한 보안 그룹의 인바운드 규칙 섹션이 올바른 IP 범위에서의 트래픽을 허용하는지 확인합니다.
- 인바운드 트래픽이 엔드포인트 서비스의 올바른 포트에 매핑되어 있는지 확인합니다.
- Switchboard에서 Outbound private connections를 확장하고 세부 정보가 예상대로 표시되는지 확인합니다.
- 웹훅과 통합에서 로컬 네트워크에 대한 요청을 허용했는지 확인합니다.
