- OAuth 인증 설정
- Jira 사용자 요구 사항
- Atlassian Marketplace에서 GitLab for Jira Cloud 앱 설치하기
- GitLab for Jira Cloud 앱 수동 설치
- GitLab 인스턴스를 프록시로 설정하기
- 보안 고려 사항
- 리버스 프록시 사용
GitLab for Jira Cloud 앱 관리
GitLab for Jira Cloud 앱을 사용하면 GitLab과 Jira Cloud를 연결하여 개발 정보를 실시간으로 동기화할 수 있습니다. 이 정보는 Jira 개발 패널에서 확인할 수 있습니다.
자체 관리되는 인스턴스에 GitLab for Jira Cloud 앱을 설정하려면 다음 중 하나를 수행하세요:
- Atlassian Marketplace에서 GitLab for Jira Cloud 앱 설치 (GitLab 15.7 이상).
- GitLab for Jira Cloud 앱 수동 설치.
개요는
자체 관리 인스턴스와 함께 Atlassian Marketplace에서 GitLab for Jira Cloud 앱 구성하기를 참조하세요.
Atlassian Marketplace에서 GitLab for Jira Cloud 앱을 설치하면
Atlassian이 개발 및 유지 관리하는 프로젝트 툴체인을 사용하여
GitLab 리포지토리를 Jira 프로젝트에 연결할 수 있습니다.
프로젝트 툴체인은 GitLab과 Jira Cloud 간의 개발 정보 동기화 방식에 영향을 주지 않습니다.
Jira Data Center 또는 Jira Server의 경우, Atlassian이 개발 및 유지 관리하는 Jira DVCS 커넥터를 사용하세요.
OAuth 인증 설정
Atlassian Marketplace에서 GitLab for Jira Cloud 앱을 설치할지 또는 수동으로 설치할지에 관계없이 OAuth 애플리케이션을 생성해야 합니다.
자체 관리되는 인스턴스에서 OAuth 애플리케이션을 생성하려면:
- 왼쪽 사이드바에서 하단의 Admin을 선택합니다.
- Applications을 선택합니다.
- New application을 선택합니다.
-
Redirect URI에서:
- Atlassian Marketplace 목록에서 앱을 설치하는 경우
https://gitlab.com/-/jira_connect/oauth_callbacks
를 입력합니다. - 앱을 수동으로 설치하는 경우
<instance_url>/-/jira_connect/oauth_callbacks
를 입력하고<instance_url>
을 인스턴스의 URL로 교체합니다.
- Atlassian Marketplace 목록에서 앱을 설치하는 경우
-
Trusted 및 Confidential 체크박스를 해제합니다.
오류를 피하기 위해 이 체크박스를 해제해야 합니다. 오류. -
Scopes에서
api
체크박스만 선택합니다. - Save application을 선택합니다.
- Application ID 값을 복사합니다.
- 왼쪽 사이드바에서 Settings > General을 선택합니다.
- GitLab for Jira App을 확장합니다.
- Jira Connect Application ID에 Application ID 값을 붙여넣습니다.
- Save changes를 선택합니다.
Jira 사용자 요구 사항
- GitLab 16.6에 도입된
org-admins
그룹에 대한 지원 소개됨.
귀하의 Atlassian 조직에서는 GitLab for Jira Cloud 앱을 설정하는 데 사용되는 Jira 사용자가 다음 중 하나의 구성원인지 확인해야 합니다:
-
조직 관리자(
org-admins
) 그룹. 최신 Atlassian 조직은 중앙 집중식 사용자 관리를 사용하고 있으며, 이는org-admins
그룹을 포함합니다. 기존 Atlassian 조직은 중앙 집중식 사용자 관리로 마이그레이션되고 있습니다. 가능하다면org-admins
그룹을 사용하여 어떤 Jira 사용자가 GitLab for Jira Cloud 앱을 관리할 수 있는지 표시해야 합니다. 또는site-admins
그룹을 사용할 수 있습니다. -
사이트 관리자(
site-admins
) 그룹.site-admins
그룹은 원래 사용자 관리 하에 사용되었습니다.
필요한 경우:
-
그룹을 편집하여 Jira 사용자를 구성원으로 추가하세요.
-
Jira에서 글로벌 권한을 사용자 정의한 경우 Jira 사용자에게
Browse users and groups
권한을 부여해야 할 수도 있습니다.
Atlassian Marketplace에서 GitLab for Jira Cloud 앱 설치하기
- GitLab 15.7에 도입됨.
자신이 관리하는 인스턴스에 Atlassian Marketplace의 공식 GitLab for Jira Cloud 앱을 사용할 수 있습니다.
이 방법으로:
-
GitLab.com은 Jira Cloud에서 발송된 설치 및 제거 생명 주기 이벤트를 처리합니다 그리고 이를 귀하의 GitLab 인스턴스로 전달합니다. 자신이 관리하는 인스턴스의 모든 데이터는 여전히 Jira Cloud로 직접 전송됩니다.
-
GitLab.com은 브랜치 생성 링크를 처리합니다 이를 귀하의 인스턴스로 리디렉션합니다.
-
GitLab 17.2 이전의 버전에서는 Jira Cloud에서 자신이 관리하는 인스턴스의 브랜치를 생성할 수 없습니다. 더 많은 정보는 문제 391432를 참조하십시오.
대안으로, 다음 경우에는 GitLab for Jira Cloud 앱을 수동으로 설치할 수 있습니다:
-
귀하의 인스턴스가 필수 조건을 충족하지 않습니다.
-
공식 Atlassian Marketplace 목록을 사용하고 싶지 않습니다.
-
GitLab.com이 앱 생명 주기 이벤트를 처리하길 원하지 않거나 귀하의 인스턴스가 앱을 설치했음을 알기를 원하지 않습니다.
-
GitLab.com이 브랜치 생성 링크를 리디렉션하길 원하지 않습니다.
필수 조건
-
인스턴스는 공개적으로 사용 가능해야 합니다.
-
인스턴스는 GitLab 버전 15.7 이상이어야 합니다.
-
OAuth 인증을 설정해야 합니다.
-
귀하의 GitLab 인스턴스는 HTTPS를 사용해야 하며, 귀하의 GitLab 인증서는 공개적으로 신뢰되거나 전체 체인 인증서를 포함해야 합니다.
-
귀하의 네트워크 구성은 다음을 허용해야 합니다:
-
자기 관리 인스턴스에서 Jira Cloud로의 아웃바운드 연결 (Atlassian IP 주소)
-
자기 관리 인스턴스와 GitLab.com 간의 인바운드 및 아웃바운드 연결 (GitLab.com IP 주소)
-
방화벽 뒤에 있는 자기 관리 인스턴스의 경우:
-
자기 관리 인스턴스 앞에 인터넷에 연결된 역방향 프록시를 설정합니다.
-
역방향 프록시를 구성하여 GitLab.com에서 인바운드 연결을 허용합니다 (GitLab.com IP 주소)
-
자기 관리 인스턴스가 위에서 설명한 아웃바운드 연결을 계속 할 수 있도록 합니다.
-
-
-
앱을 설치하고 구성하는 Jira 사용자는 특정 요구 사항을 충족해야 합니다.
인스턴스 설정
GitLab 15.7 및 이후 버전에서 GitLab for Jira Cloud 앱을 위한 셀프 관리 인스턴스를 설정하려면:
-
왼쪽 사이드바 하단에서 Admin를 선택합니다.
-
Settings > General을 선택합니다.
-
GitLab for Jira App을 확장합니다.
-
Jira Connect Proxy URL에서
https://gitlab.com
을 입력합니다. -
Save changes를 선택합니다.
인스턴스 링크
셀프 관리 인스턴스를 GitLab for Jira Cloud 앱에 연결하려면:
-
GitLab for Jira Cloud 앱을 설치합니다.
-
선택 사항. Jira Cloud가 이제 연결되었는지 확인.
Jira Cloud가 연결되었는지 확인
Jira Cloud가 연결되었는지 확인하려면 Rails console를 사용할 수 있습니다:
-
특정 그룹:
JiraConnectSubscription.where(namespace: Namespace.by_path('group/subgroup'))
-
특정 프로젝트:
Project.find_by_full_path('path/to/project').jira_subscription_exists?
-
모든 그룹:
installation = JiraConnectInstallation.find_by_base_url("https://customer_name.atlassian.net") installation.subscriptions
GitLab for Jira Cloud 앱 수동 설치
공식 Atlassian Marketplace 목록을 사용하고 싶지 않은 경우, GitLab for Jira Cloud 앱을 수동으로 설치합니다.
각 Jira Cloud 앱은 단일 위치에서 설치해야 합니다. Jira는 제공된 위치에서 manifest file를 가져옵니다. 이 manifest file은 시스템에 대한 앱 설명을 담고 있습니다.
Jira Cloud와 함께 셀프 관리 인스턴스를 지원하려면 다음 중 하나를 수행합니다:
사전 요구 사항
-
인스턴스는 공개적으로 사용 가능해야 합니다.
-
OAuth 인증을 설정해야 합니다.
-
네트워크 구성에서 다음을 허용해야 합니다:
-
셀프 관리 인스턴스와 Jira Cloud 간의 입출력 연결 (Atlassian IP addresses).
-
방화벽 뒤에 있는 셀프 관리 인스턴스의 경우:
-
셀프 관리 인스턴스 앞에 인터넷에 노출된 리버스 프록시를 설정합니다.
-
리버스 프록시를 구성하여 Jira Cloud에서의 입력 연결을 허용합니다 (Atlassian IP addresses).
-
셀프 관리 인스턴스가 위의 설명된 출력 연결을 여전히 만들 수 있도록 합니다.
-
-
-
앱을 설치하고 구성하는 Jira 사용자는 특정 요구 사항을 충족해야 합니다.
인스턴스 설정
GitLab 15.7 이상에서 GitLab for Jira Cloud 앱을 위한 셀프 관리 인스턴스를 설정하려면:
- 왼쪽 사이드바에서 아래쪽의 Admin을 선택합니다.
- Settings > General을 선택합니다.
- GitLab for Jira App을 확장합니다.
- Jira Connect Proxy URL에서 이 항목이 비어 있는지 확인합니다.
- Save changes를 선택합니다.
개발 모드에서 앱 설치
Atlassian Marketplace 외부에서 앱을 설치할 수 있도록 Jira 인스턴스를 구성하려면:
- 관리자로서 Jira 인스턴스에 로그인합니다.
-
개발 모드 활성화
Jira 인스턴스에서 개발 모드를 활성화합니다. - 관리자로서 GitLab에 로그인합니다.
-
Jira 인스턴스에서 GitLab 설치:
- Jira 인스턴스에서 Apps > Manage Apps로 이동하여 Upload app을 선택합니다.
-
App descriptor URL에 인스턴스 구성에 기반한 매니페스트 파일의 전체 URL을 제공합니다.
기본적으로 매니페스트 파일은
/-/jira_connect/app_descriptor.json
에 있습니다.
예를 들어, GitLab 셀프 관리 인스턴스 도메인이app.pet-store.cloud
인 경우, 매니페스트 파일은https://app.pet-store.cloud/-/jira_connect/app_descriptor.json
에 있습니다. - Upload를 선택합니다.
- 통합을 구성하기 위해 Get started를 선택합니다.
-
개발 모드 비활성화
Jira 인스턴스에서 개발 모드를 비활성화합니다.
Apps > Manage Apps에 GitLab for Jira Cloud가 이제 표시됩니다.
또한 Get started를 선택하여 GitLab for Jira Cloud 앱을 구성할 수 있습니다.
GitLab 업그레이드가 앱 설명자를 변경하는 경우, 앱을 다시 설치해야 합니다.
Atlassian Marketplace 목록 만들기
개발 모드 사용을 원하지 않는 경우, 자체 Atlassian Marketplace 목록을 만들 수 있습니다.
이렇게 하면 Atlassian Marketplace에서 GitLab for Jira Cloud 앱을 설치할 수 있습니다.
Atlassian Marketplace 목록을 만들려면:
- Atlassian Marketplace 공급업체로 등록합니다.
- 애플리케이션 설명자 URL로 애플리케이션을 나열합니다.
- 매니페스트 파일은 다음 위치에 있습니다:
https://your.domain/your-path/-/jira_connect/app_descriptor.json
- 공공 애플리케이션은 모든 사용자가 볼 수 있고 설치할 수 있으므로 애플리케이션을
private
으로 나열해야 합니다.
- 매니페스트 파일은 다음 위치에 있습니다:
- 애플리케이션에 대한 테스트 라이센스 토큰을 생성합니다.
GitLab.com Marketplace 목록과 마찬가지로 이 방법은
자동 업데이트를 사용합니다.
Atlassian Marketplace 목록 만들기에 대한 자세한 내용은
Atlassian 문서를 참조하십시오.
GitLab 인스턴스를 프록시로 설정하기
GitLab 인스턴스는 GitLab for Jira Cloud 앱을 통해 다른 GitLab 인스턴스의 프록시 역할을 할 수 있습니다.
여러 GitLab 인스턴스를 관리하지만 앱을 한 번만 수동으로 설치하고 싶다면 프록시를 사용하는 것이 좋습니다.
GitLab 인스턴스를 프록시로 설정하려면:
-
왼쪽 사이드바에서 하단의 관리자를 선택합니다.
-
설정 > 일반을 선택합니다.
-
GitLab for Jira 앱을 확장합니다.
-
공개 키 저장소 활성화를 선택합니다.
-
변경 사항 저장을 선택합니다.
프록시를 사용하는 다른 GitLab 인스턴스는 다음 설정을 구성하여 프록시 인스턴스를 가리켜야 합니다:
보안 고려 사항
다음 보안 고려 사항은 앱 관리에 특정적입니다.
앱 사용과 관련된 고려 사항은 보안 고려 사항을 참조하세요.
GitLab.com의 앱 수명 주기 이벤트 처리
Atlassian Marketplace에서 GitLab for Jira Cloud 앱을 설치하면,
GitLab.com은 Jira로부터 수명 주기 이벤트를 수신합니다.
이 이벤트는 앱이 Jira 프로젝트에 설치되거나 제거되는 경우에 한정됩니다.
설치 이벤트에서는 GitLab.com이 Jira로부터 비밀 토큰을 수신합니다.
GitLab.com은 이 토큰을 AES256-GCM
으로 암호화하여 나중에 Jira로부터 수신하는 수명 주기 이벤트를 검증합니다.
그런 다음 GitLab.com은 이 토큰을 귀하의 자체 관리 인스턴스에 전달하여 귀하의 인스턴스가 동일한 토큰으로 Jira에 대한 요청을 인증할 수 있도록 합니다.
귀하의 자체 관리 인스턴스도 GitLab for Jira Cloud 앱이 설치되거나 제거되었다는 알림을 받습니다.
귀하의 자체 관리 인스턴스에서 Jira 개발 패널로 데이터가 전송될 때,
이는 귀하의 자체 관리 인스턴스에서 직접 Jira로 전송되며 GitLab.com으로 전송되지 않습니다.
GitLab.com은 이 토큰을 사용하여 귀하의 Jira 프로젝트에서 데이터를 액세스하지 않습니다.
귀하의 자체 관리 인스턴스는 데이터에 액세스하기 위해 토큰을 사용합니다.
GitLab.com이 수신하는 수명 주기 이벤트 및 페이로드에 대한 자세한 정보는 Atlassian 문서를 참조하세요.
GitLab.com 브랜치 생성 처리
Atlassian Marketplace에서 GitLab for Jira Cloud 앱을 설치한 경우,
개발 패널에서 브랜치를 생성하기 위한 링크는 처음에 사용자를 GitLab.com으로 보냅니다.
Jira는 GitLab.com에 JWT 토큰을 전송합니다. GitLab.com은 토큰을 확인하여 요청을 처리한 후 사용자의 GitLab 인스턴스로 요청을 리디렉션합니다.
OAuth를 통한 GitLab 접근
GitLab은 Jira와 액세스 토큰을 공유하지 않습니다. 그러나 사용자는 앱을 구성하기 위해 OAuth를 통해 인증해야 합니다.
액세스 토큰은 PKCE OAuth 흐름을 통해 가져오며 클라이언트 측에만 저장됩니다.
OAuth 흐름을 초기화하는 앱 프론트엔드는 Jira의 iframe을 통해 GitLab에서 로드되는 JavaScript 애플리케이션입니다.
OAuth 애플리케이션은 API에 대한 완전한 읽기 및 쓰기 액세스를 부여하는 api
범위를 가져야 합니다.
이 액세스에는 모든 그룹 및 프로젝트, 컨테이너 레지스트리 및 패키지 레지스트리가 포함됩니다.
그러나 GitLab for Jira Cloud 앱은 이 액세스를 사용하여 다음을 수행합니다:
- 링크할 그룹 표시.
- 그룹 링크.
OAuth를 통한 액세스는 사용자가 GitLab for Jira Cloud 앱을 구성하는 시간 동안만 필요합니다. 자세한 내용은 액세스 토큰 만료를 참조하세요.
리버스 프록시 사용
가능하다면, 자체 관리 인스턴스 앞에 리버스 프록시를 사용하는 것을 피해야 합니다.
대신, 공용 IP 주소를 사용하고 방화벽으로 도메인을 보호하는 것을 고려하세요.
인터넷에서 직접 접근할 수 없는 자체 관리 인스턴스에서 GitLab for Jira Cloud 앱을 위해 리버스 프록시를 사용해야 하는 경우, 다음 사항을 염두에 두세요:
-
Atlassian Marketplace에서 GitLab for Jira Cloud 앱을 설치할 때, 내부 GitLab FQDN과 리버스 프록시 FQDN 모두에 접근할 수 있는 클라이언트를 사용하세요.
-
GitLab for Jira Cloud 앱을 수동으로 설치할 때, OAuth 인증을 설정하기 위해 리버스 프록시 FQDN을 Redirect URI로 사용하세요.
- 리버스 프록시는 설치 방법에 대한 전제 조건을 충족해야 합니다:
-
Jira 개발 패널은 리버스 프록시 FQDN 대신 내부 GitLab FQDN 또는 GitLab.com으로 연결될 수 있습니다. 자세한 내용은 문제 434085를 참조하세요.
-
공용 인터넷에서 리버스 프록시를 안전하게 보호하려면, Atlassian IP 주소에서만 인바운드 트래픽을 허용하세요.
- 프록시와 함께 리라이트 또는 서브필터를 사용하는 경우,
프록시가
gitlab-jira-connect-${host}
앱 키를 리라이트하거나 교체하지 않도록 하세요. 그렇지 않으면Failed to link group
오류가 발생할 수 있습니다.
외부 NGINX
이 서버 블록은 Jira Cloud와 함께 작동하는 GitLab에 대한 리버스 프록시를 구성하는 방법의 예입니다:
server {
listen *:80;
server_name gitlab.mycompany.com;
server_tokens off;
location /.well-known/acme-challenge/ {
root /var/www/;
}
location / {
return 301 https://gitlab.mycompany.com:443$request_uri;
}
}
server {
listen *:443 ssl;
server_tokens off;
server_name gitlab.mycompany.com;
ssl_certificate /etc/letsencrypt/live/gitlab.mycompany.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gitlab.mycompany.com/privkey.pem;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_session_timeout 1d;
access_log "/var/log/nginx/proxy_access.log";
error_log "/var/log/nginx/proxy_error.log";
location / {
proxy_pass https://gitlab.internal;
proxy_hide_header upgrade;
proxy_set_header Host gitlab.mycompany.com:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
이 예에서는:
-
gitlab.mycompany.com
을 리버스 프록시 FQDN으로,gitlab.internal
을 내부 GitLab FQDN으로 변경하세요. -
유효한 인증서에 대해
ssl_certificate
및ssl_certificate_key
를 설정하세요 (예시는 Certbot을 사용합니다). -
GitLab과 Jira Cloud가 성공적으로 연결되도록
Host
프록시 헤더를 리버스 프록시 FQDN으로 설정하세요.
Jira Cloud를 GitLab에 연결하려면 리버스 프록시 FQDN만 사용해야 합니다.
내부 GitLab FQDN에서 GitLab에 계속 액세스해야 합니다.
리버스 프록시 FQDN에서 GitLab에 액세스하면 GitLab이 예상대로 작동하지 않을 수 있습니다.
자세한 내용은 문제 21319를 참조하세요.