Skip to main content

Codespace 내의 다른 리포지토리에 대한 액세스 관리

GitHub Codespaces에서 액세스할 수 있는 리포지토리를 관리할 수 있습니다.

개요

기본적으로 codespace에는 토큰이 생성된 리포지토리에 대한 read 권한 또는 readwrite 권한이 지정되는 토큰이 할당됩니다. 이 토큰의 범위는 다음과 같은 상황에서 자동으로 변경됩니다.

  • 읽기 권한만 있는 리포지토리에 대한 codespace를 만든 다음, codespace에서 커밋을 수행하거나 새 분기를 푸시하는 경우 GitHub Codespaces은(는) 자동으로 codespace를 리포지토리의 새 포크 또는 기존 포크에 연결하고 해당 포크에 대한 readwrite 권한을 토큰에 업데이트합니다. 자세한 내용은 "codespace에서 원본 제어 사용"을(를) 참조하세요.
  • 템플릿에서 codespace를 만든 다음 새 리포지토리에 codespace를 게시하는 경우 GitHub Codespaces은(는) 토큰을 업데이트하여 새 리포지토리에 대한 readwrite 사용 권한을 부여합니다. 자세한 정보는 "템플릿에서 codespace 만들기"을(를) 참조하세요.

자세한 정보는 "GitHub Codespaces의 보안"을(를) 참조하세요.

프로젝트에 다른 리포지토리에 대한 추가 권한이 필요한 경우 이 문서의 뒷부분에 있는 "리포지토리 권한 추가 설정"에 설명된 대로 devcontainer.json 파일에서 이를 구성할 수 있습니다. devcontainer.json 파일에 권한이 나열되면 해당 리포지토리에 대한 codespace 생성 과정의 일환으로 추가 권한을 검토하고 권한을 부여하라는 메시지가 표시됩니다. 나열된 권한에 권한을 부여하면 GitHub Codespaces는 사용자의 선택을 기억하며, devcontainer.json 파일의 권한이 변경되지 않는 한 권한 부여를 묻는 메시지를 표시하지 않습니다.

참고: devcontainer.json 파일의 사용 권한을 업데이트해도 기존 codespace의 사용 권한은 변경되지 않습니다. 기존 codespace에 추가 권한이 필요한 경우 "리포지토리에 대한 인증 문제 해결"을(를) 참조하세요.

사용자 지정 권한이 있는 codespace 만들기

사용자 지정 권한이 정의된 codespace를 만들려면 다음 중 하나를 사용해야 합니다.

추가 리포지토리 권한 설정

devcontainer.json 파일에서 GitHub Codespaces에 대한 리포지토리 권한을 구성합니다. 추가하거나 변경하는 모든 사용자 지정 권한은 변경 내용이 리포지토리에 커밋된 후에 만든 새 codespace에만 적용됩니다. Codespace 내에서 사용 권한을 추가하거나 변경하는 경우 codespace를 다시 빌드하더라도 해당 권한이 현재 codespace에 적용되지 않습니다.

  1. 리포지토리에 아직 devcontainer.json 파일이 없으면 지금 추가하세요. 자세한 내용은 "리포지토리에 개발 컨테이너 구성 추가"을(를) 참조하세요.

  2. devcontainer.json 파일을 편집하고 repositories 개체에 필요한 리포지토리 이름 및 권한을 추가합니다.

    JSON
    {
      "customizations": {
        "codespaces": {
          "repositories": {
            "my_org/my_repo": {
              "permissions": {
                "issues": "write"
              }
            }
          }
        }
      }
    }
    

    참고:

    • 현재 작업 중인 리포지토리와 동일한 개인 계정 또는 조직에 속한 리포지토리만 참조할 수 있습니다.
    • * 와일드카드를 사용하여 조직의 여러 리포지토리에 권한을 부여할 수 있습니다. 예를 들어 my_org 조직의 모든 리포지토리에 권한을 부여하려면 my_org/*을(를) 사용하세요. 이 구문은 코드스페이스에만 유효합니다. 사전 빌드에 사용되는 모든 devcontainer.json 파일에서 각 리포지토리에 대한 권한을 별도로 정의해야 합니다. 자세한 내용은 "사전 빌드에서 다른 리포지토리에 액세스할 수 있도록 허용"을(를) 참조하세요.

    나열된 각 리포지토리에 대해 다음 권한을 원하는 만큼 부여할 수 있습니다.

    • actions - 읽기/쓰기
    • checks - 읽기/쓰기
    • contents - 읽기/쓰기
    • deployments - 읽기/쓰기
    • discussions - 읽기/쓰기
    • issues - 읽기/쓰기
    • packages - 읽기
    • pages - 읽기/쓰기
    • pull_requests - 읽기/쓰기
    • repository_projects - 읽기/쓰기
    • statuses - 읽기/쓰기
    • workflows - 쓰기

    조직의 리포지토리에 대한 권한을 설정하려면 repositories 개체에 해당 리포지토리 이름을 명시적으로 추가해야 합니다.

    {
      "customizations": {
        "codespaces": {
          "repositories": {
            "my_org/my_repo": {
              "permissions": {
                "issues": "write"
              }
            }
          }
        }
      }
    }
    

    지정된 리포지토리에 대한 모든 권한을 설정하려면 리포지토리 개체에서 "permissions": "read-all" 또는 "permissions": "write-all"을(를) 사용합니다.

    {
      "customizations": {
        "codespaces": {
          "repositories": {
            "my_org/my_repo": {
              "permissions": "write-all"
            }
          }
        }
      }
    }
    

요청된 권한에 권한 부여

devcontainer.json 파일에 추가 리포지토리 권한이 정의되면, 이 리포지토리에 대한 codespace 또는 사전 빌드 구성을 만들 때 권한을 검토하고 필요하다면 권한에 권한을 부여하라는 메시지가 표시됩니다. 리포지토리에 대한 권한에 권한을 부여하면 GitHub Codespaces는 리포지토리에 요청된 권한 집합이 변경되기 전에는 메시지를 다시 표시하지 않습니다.

권한 요청 페이지의 스크린샷 요청에 따라 메타데이터에 대한 읽기 권한과 문제에 대한 쓰기 권한이라는 두 가지 권한이 표시됩니다.

알고 있으며 신뢰하는 리포지토리에 대한 권한에만 권한을 부여해야 합니다. 요청된 권한 집합을 신뢰하지 않는 경우 권한을 부여하지 않고 계속 진행을 클릭하여 기본 사용 권한 집합으로 기본 권한 집합을 이용해 codespace를 만듭니다. 추가 권한을 거부하면 codespace가 자신이 생성된 리포지토리에만 액세스할 수 있으므로 codespace에서의 프로젝트 기능이 영향받을 수 있습니다.

개인 계정이 이미 소유 중인 권한에만 권한을 부여할 수 있습니다. Codespace가 사용자가 현재 액세스할 수 없는 리포지토리에 대한 권한을 요청하는 경우에는 리포지토리의 소유자 또는 관리자에게 문의하여 충분한 액세스 권한을 얻은 다음 codespace를 다시 만들어야 합니다.

추가 참고 자료