InfoGrab Docs

GitLab Dedicated 암호화

요약

GitLab Dedicated는 AWS Key Management Service(KMS)를 사용하여 고급 암호화 표준(AES) 256비트 암호화로 저장 및 전송 중인 모든 데이터를 암호화합니다. 저장 중인 모든 데이터는 봉투 암호화를 사용하며, 데이터는 여러 계층의 암호화 키로 보호됩니다.

GitLab Dedicated는 AWS Key Management Service(KMS)를 사용하여 고급 암호화 표준(AES) 256비트 암호화로 저장 및 전송 중인 모든 데이터를 암호화합니다.

저장 데이터 암호화#

저장 중인 모든 데이터는 봉투 암호화를 사용하며, 데이터는 여러 계층의 암호화 키로 보호됩니다.

각 서비스는 암호화를 다르게 구현합니다:

서비스 암호화 방법
Amazon S3 (SSE-S3) 각 객체가 고유한 키로 암호화되는 객체별 암호화를 사용하며, 해당 키는 AWS 관리 루트 키로 암호화됩니다.
Amazon EBS KMS에서 생성된 데이터 암호화 키(DEK)로 볼륨 레벨 암호화를 사용합니다.
Amazon RDS (PostgreSQL) KMS에서 생성된 DEK로 스토리지 레벨 암호화를 사용합니다.
KMS 하드웨어 보안 모듈(HSM)로 보호되는 AWS 관리 키 계층에서 암호화 키를 관리합니다.

이 봉투 암호화 시스템에서:

  • 데이터는 데이터 암호화 키로 암호화됩니다.
  • 데이터 암호화 키 자체는 암호화 키로 암호화됩니다.
  • 암호화된 데이터 암호화 키는 암호화된 데이터와 함께 저장됩니다.
  • 암호화 키는 Key Management Service에 유지되며 암호화되지 않은 형태로 노출되지 않습니다.
  • 모든 암호화 키는 하드웨어 보안 모듈로 보호됩니다.

이 봉투 암호화 프로세스는 각 암호화 작업을 위해 KMS가 데이터 암호화 키를 특별히 파생하는 방식으로 작동합니다. 데이터 암호화 키(DEK)는 데이터를 직접 암호화하고, DEK 자체는 암호화 키로 암호화되어 데이터 주위에 안전한 봉투를 만듭니다.

전송 중 데이터 암호화#

전송 중인 모든 데이터는 서비스 간 및 네트워크 연결을 통해 이동하는 데이터를 보호하기 위해 강력한 암호 도구 모음을 갖춘 전송 계층 보안(TLS)을 사용합니다.

각 서비스는 TLS를 사용합니다:

서비스 암호화 방법
웹 애플리케이션 클라이언트-서버 통신에 TLS 1.2/1.3
Amazon S3 HTTPS 액세스에 TLS 1.2/1.3
Amazon EBS AWS 데이터 센터 간 데이터 복제에 TLS
Amazon RDS (PostgreSQL) 데이터베이스 연결에 Secure Sockets Layer (SSL)/TLS (최소 TLS 1.2)
AWS KMS API 요청에 TLS

TLS 인증서는 기본적으로 생성 및 관리됩니다. 선택적으로 조직의 인증서를 대신 사용하도록 사용자 정의 TLS 인증서를 구성할 수 있습니다. 자세한 내용은 외부 서비스에 대한 사용자 정의 인증 기관을 참조하세요.

암호화 옵션#

다음 암호화 옵션을 사용할 수 있습니다:

  • GitLab 관리 암호화(기본값): GitLab이 구성 없이 모든 암호화 설정을 처리합니다.
  • 고객 관리 암호화: 키 관리 및 액세스 정책에 대한 추가 제어를 위해 자체 암호화 키를 제공하고 제어합니다.

GitLab 관리 암호화#

기본적으로 GitLab은 인스턴스에 대한 모든 암호화 설정을 처리합니다. 설정이 필요하지 않으며 GitLab이 모든 서비스에 걸쳐 암호화를 자동으로 구성합니다.

키는 암호화 키에 대한 무단 액세스를 방지하고 데이터가 암호화된 상태를 유지하도록 보장하는 AWS 하드웨어 보안 모듈(HSM) 기반 보안 제어로 보호됩니다.

고객 관리 암호화#

Warning

고객 관리 암호화 키는 인스턴스 온보딩 중에 구성되어야 합니다. 활성화되면 프로비저닝 후에 비활성화하거나 변경할 수 없습니다.

고객 관리 암호화 키를 사용하면 저장 데이터를 보호하는 키를 직접 제어할 수 있습니다.

자체 AWS 계정에서 AWS KMS 키를 만들고 관리하고 인스턴스를 만들 때 구성합니다. GitLab은 데이터를 암호화하기 위해 키를 사용하지만 AWS 계정을 통해 키 액세스 정책, 교체 및 수명 주기 관리에 대한 완전한 제어를 유지합니다.

다른 레벨에서 키를 구성할 수 있습니다:

  • 모든 리전의 모든 서비스에 대한 하나의 키: Geo 인스턴스가 있는 각 리전에 복제본이 있는 단일 다중 리전 키를 사용합니다.
  • 각 리전 내 모든 서비스에 대한 하나의 키: Geo 인스턴스가 있는 각 리전에 대해 별도의 키를 사용합니다.
  • 리전당 서비스별 키: 각 리전 내에서 다른 서비스(백업, EBS, RDS, S3, 고급 검색)에 다른 키를 사용합니다.

암호화 키 만들기#

키 교체 요구 사항으로 인해 인스턴스는 키 재료를 가져오는 키가 아닌 AWS가 암호화 키 재료를 생성하는 키(AWS_KMS 원본 유형)만 지원합니다. 자세한 내용은 다중 리전 기본 키 만들기를 참조하세요.

필수 조건:

  • GitLab Dedicated 계정 팀에서 GitLab AWS 계정 ID를 받았어야 합니다.

자체 암호화 키를 만들려면:

  1. AWS Management Console에 로그인하고 KMS 서비스로 이동합니다.

  2. 키를 만들려는 리전을 선택합니다.

  3. Create key를 선택합니다.

  4. Configure key 섹션에서:

    • Key type의 경우 Symmetric을 선택합니다.
    • Key usage의 경우 Encrypt and decrypt를 선택합니다.
    • Advanced options 아래:
      • Key material origin의 경우 AWS_KMS를 선택합니다.
      • Regionality의 경우 Multi-Region key를 선택합니다.
  5. 키에 대한 Alias, 설명 및 태그를 입력합니다.

  6. 키를 관리할 수 있는 IAM 사용자 및 역할을 선택합니다.

  7. 선택 사항. 실수로 삭제를 방지하려면 Allow key administrators to delete this key를 지웁니다.

  8. Define key usage permissions 페이지의 Other AWS accounts 섹션에서 계정 팀에서 제공한 GitLab AWS 계정 ID를 입력합니다.

  9. KMS 키 정책이 다음 예시와 일치하는지 확인합니다. 자리 표시자 값을 계정 ID와 사용자 이름으로 교체합니다. 이 정책을 넘어서는 추가 제한은 지원되지 않습니다.

    [!note] AWS가 자동 생성할 수 있는 kms:GrantIsForAWSResource를 포함한 추가 조건이나 제한을 제거합니다.

{
    "Version": "2012-10-17",
    "Id": "byok-key-policy",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam:::root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow access for Key Administrators",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam:::user/"
                ]
            },
            "Action": [
                "kms:Create*",
                "kms:Describe*",
                "kms:Enable*",
                "kms:List*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Delete*",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:ScheduleKeyDeletion",
                "kms:CancelKeyDeletion",
                "kms:ReplicateKey",
                "kms:UpdatePrimaryRegion"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam:::root"
                ]
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow attachment of persistent resources",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam:::root"
                ]
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*"
        }
    ]
}

복제본 키 만들기#

다른 리전의 여러 Geo 인스턴스에서 동일한 암호화 키를 사용하려면 복제본 키를 만듭니다. 자세한 내용은 다중 리전 복제본 키 만들기를 참조하세요.

필수 조건:

  • 다중 리전 기본 키를 만들었어야 합니다.
  • 다른 AWS 리전에 추가 Geo 인스턴스가 있어야 합니다.

복제본 키를 만들려면:

  1. AWS KMS 콘솔에서 이전에 만든 키를 선택합니다.
  2. Regionality 탭을 선택합니다.
  3. Related multi-Region keys 섹션에서 Create new replica keys를 선택합니다.
  4. 추가 Geo 인스턴스가 있는 AWS 리전을 선택합니다.
  5. 원래 Alias를 유지하거나 복제본 키에 다른 Alias를 입력합니다.
  6. 선택 사항. 설명을 입력하고 태그를 추가합니다.
  7. 복제본 키를 관리할 수 있는 ID 및 액세스 관리(IAM) 사용자 및 역할을 선택합니다.
  8. 선택 사항. Allow key administrators to delete this key 체크박스를 선택하거나 지웁니다.
  9. Define key usage permissions 페이지에서 GitLab AWS 계정이 Other AWS accounts 아래에 나열되어 있는지 확인합니다.
  10. 정책과 설정을 검토합니다.
  11. Finish를 선택합니다.

GitLab Dedicated 암호화

Tier: Ultimate
Offering: GitLab Dedicated
원문 보기
요약

GitLab Dedicated는 AWS Key Management Service(KMS)를 사용하여 고급 암호화 표준(AES) 256비트 암호화로 저장 및 전송 중인 모든 데이터를 암호화합니다. 저장 중인 모든 데이터는 봉투 암호화를 사용하며, 데이터는 여러 계층의 암호화 키로 보호됩니다.

GitLab Dedicated는 AWS Key Management Service(KMS)를 사용하여 고급 암호화 표준(AES) 256비트 암호화로 저장 및 전송 중인 모든 데이터를 암호화합니다.

저장 데이터 암호화#

저장 중인 모든 데이터는 봉투 암호화를 사용하며, 데이터는 여러 계층의 암호화 키로 보호됩니다.

각 서비스는 암호화를 다르게 구현합니다:

서비스 암호화 방법
Amazon S3 (SSE-S3) 각 객체가 고유한 키로 암호화되는 객체별 암호화를 사용하며, 해당 키는 AWS 관리 루트 키로 암호화됩니다.
Amazon EBS KMS에서 생성된 데이터 암호화 키(DEK)로 볼륨 레벨 암호화를 사용합니다.
Amazon RDS (PostgreSQL) KMS에서 생성된 DEK로 스토리지 레벨 암호화를 사용합니다.
KMS 하드웨어 보안 모듈(HSM)로 보호되는 AWS 관리 키 계층에서 암호화 키를 관리합니다.

이 봉투 암호화 시스템에서:

  • 데이터는 데이터 암호화 키로 암호화됩니다.
  • 데이터 암호화 키 자체는 암호화 키로 암호화됩니다.
  • 암호화된 데이터 암호화 키는 암호화된 데이터와 함께 저장됩니다.
  • 암호화 키는 Key Management Service에 유지되며 암호화되지 않은 형태로 노출되지 않습니다.
  • 모든 암호화 키는 하드웨어 보안 모듈로 보호됩니다.

이 봉투 암호화 프로세스는 각 암호화 작업을 위해 KMS가 데이터 암호화 키를 특별히 파생하는 방식으로 작동합니다. 데이터 암호화 키(DEK)는 데이터를 직접 암호화하고, DEK 자체는 암호화 키로 암호화되어 데이터 주위에 안전한 봉투를 만듭니다.

전송 중 데이터 암호화#

전송 중인 모든 데이터는 서비스 간 및 네트워크 연결을 통해 이동하는 데이터를 보호하기 위해 강력한 암호 도구 모음을 갖춘 전송 계층 보안(TLS)을 사용합니다.

각 서비스는 TLS를 사용합니다:

서비스 암호화 방법
웹 애플리케이션 클라이언트-서버 통신에 TLS 1.2/1.3
Amazon S3 HTTPS 액세스에 TLS 1.2/1.3
Amazon EBS AWS 데이터 센터 간 데이터 복제에 TLS
Amazon RDS (PostgreSQL) 데이터베이스 연결에 Secure Sockets Layer (SSL)/TLS (최소 TLS 1.2)
AWS KMS API 요청에 TLS

TLS 인증서는 기본적으로 생성 및 관리됩니다. 선택적으로 조직의 인증서를 대신 사용하도록 사용자 정의 TLS 인증서를 구성할 수 있습니다. 자세한 내용은 외부 서비스에 대한 사용자 정의 인증 기관을 참조하세요.

암호화 옵션#

다음 암호화 옵션을 사용할 수 있습니다:

  • GitLab 관리 암호화(기본값): GitLab이 구성 없이 모든 암호화 설정을 처리합니다.
  • 고객 관리 암호화: 키 관리 및 액세스 정책에 대한 추가 제어를 위해 자체 암호화 키를 제공하고 제어합니다.

GitLab 관리 암호화#

기본적으로 GitLab은 인스턴스에 대한 모든 암호화 설정을 처리합니다. 설정이 필요하지 않으며 GitLab이 모든 서비스에 걸쳐 암호화를 자동으로 구성합니다.

키는 암호화 키에 대한 무단 액세스를 방지하고 데이터가 암호화된 상태를 유지하도록 보장하는 AWS 하드웨어 보안 모듈(HSM) 기반 보안 제어로 보호됩니다.

고객 관리 암호화#

Warning

고객 관리 암호화 키는 인스턴스 온보딩 중에 구성되어야 합니다. 활성화되면 프로비저닝 후에 비활성화하거나 변경할 수 없습니다.

고객 관리 암호화 키를 사용하면 저장 데이터를 보호하는 키를 직접 제어할 수 있습니다.

자체 AWS 계정에서 AWS KMS 키를 만들고 관리하고 인스턴스를 만들 때 구성합니다. GitLab은 데이터를 암호화하기 위해 키를 사용하지만 AWS 계정을 통해 키 액세스 정책, 교체 및 수명 주기 관리에 대한 완전한 제어를 유지합니다.

다른 레벨에서 키를 구성할 수 있습니다:

  • 모든 리전의 모든 서비스에 대한 하나의 키: Geo 인스턴스가 있는 각 리전에 복제본이 있는 단일 다중 리전 키를 사용합니다.
  • 각 리전 내 모든 서비스에 대한 하나의 키: Geo 인스턴스가 있는 각 리전에 대해 별도의 키를 사용합니다.
  • 리전당 서비스별 키: 각 리전 내에서 다른 서비스(백업, EBS, RDS, S3, 고급 검색)에 다른 키를 사용합니다.

암호화 키 만들기#

키 교체 요구 사항으로 인해 인스턴스는 키 재료를 가져오는 키가 아닌 AWS가 암호화 키 재료를 생성하는 키(AWS_KMS 원본 유형)만 지원합니다. 자세한 내용은 다중 리전 기본 키 만들기를 참조하세요.

필수 조건:

  • GitLab Dedicated 계정 팀에서 GitLab AWS 계정 ID를 받았어야 합니다.

자체 암호화 키를 만들려면:

  1. AWS Management Console에 로그인하고 KMS 서비스로 이동합니다.

  2. 키를 만들려는 리전을 선택합니다.

  3. Create key를 선택합니다.

  4. Configure key 섹션에서:

    • Key type의 경우 Symmetric을 선택합니다.
    • Key usage의 경우 Encrypt and decrypt를 선택합니다.
    • Advanced options 아래:
      • Key material origin의 경우 AWS_KMS를 선택합니다.
      • Regionality의 경우 Multi-Region key를 선택합니다.
  5. 키에 대한 Alias, 설명 및 태그를 입력합니다.

  6. 키를 관리할 수 있는 IAM 사용자 및 역할을 선택합니다.

  7. 선택 사항. 실수로 삭제를 방지하려면 Allow key administrators to delete this key를 지웁니다.

  8. Define key usage permissions 페이지의 Other AWS accounts 섹션에서 계정 팀에서 제공한 GitLab AWS 계정 ID를 입력합니다.

  9. KMS 키 정책이 다음 예시와 일치하는지 확인합니다. 자리 표시자 값을 계정 ID와 사용자 이름으로 교체합니다. 이 정책을 넘어서는 추가 제한은 지원되지 않습니다.

    [!note] AWS가 자동 생성할 수 있는 kms:GrantIsForAWSResource를 포함한 추가 조건이나 제한을 제거합니다.

{
    "Version": "2012-10-17",
    "Id": "byok-key-policy",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam:::root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow access for Key Administrators",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam:::user/"
                ]
            },
            "Action": [
                "kms:Create*",
                "kms:Describe*",
                "kms:Enable*",
                "kms:List*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Delete*",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:ScheduleKeyDeletion",
                "kms:CancelKeyDeletion",
                "kms:ReplicateKey",
                "kms:UpdatePrimaryRegion"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam:::root"
                ]
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow attachment of persistent resources",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam:::root"
                ]
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*"
        }
    ]
}

복제본 키 만들기#

다른 리전의 여러 Geo 인스턴스에서 동일한 암호화 키를 사용하려면 복제본 키를 만듭니다. 자세한 내용은 다중 리전 복제본 키 만들기를 참조하세요.

필수 조건:

  • 다중 리전 기본 키를 만들었어야 합니다.
  • 다른 AWS 리전에 추가 Geo 인스턴스가 있어야 합니다.

복제본 키를 만들려면:

  1. AWS KMS 콘솔에서 이전에 만든 키를 선택합니다.
  2. Regionality 탭을 선택합니다.
  3. Related multi-Region keys 섹션에서 Create new replica keys를 선택합니다.
  4. 추가 Geo 인스턴스가 있는 AWS 리전을 선택합니다.
  5. 원래 Alias를 유지하거나 복제본 키에 다른 Alias를 입력합니다.
  6. 선택 사항. 설명을 입력하고 태그를 추가합니다.
  7. 복제본 키를 관리할 수 있는 ID 및 액세스 관리(IAM) 사용자 및 역할을 선택합니다.
  8. 선택 사항. Allow key administrators to delete this key 체크박스를 선택하거나 지웁니다.
  9. Define key usage permissions 페이지에서 GitLab AWS 계정이 Other AWS accounts 아래에 나열되어 있는지 확인합니다.
  10. 정책과 설정을 검토합니다.
  11. Finish를 선택합니다.