View a markdown version of this page

AL2023에서 리포지토리 메타데이터 서명 - Amazon Linux 2023

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AL2023에서 리포지토리 메타데이터 서명

릴리스부터 AL2023 2023.11.20260406리포지토리에는 리포지토리 메타데이터에 대한 암호화 서명이 포함됩니다. 각 리포지토리의 repomd.xml 파일에는 패키지를 다운로드하기 전에 리포지토리 메타데이터의 신뢰성과 무결성을 확인하는 데 사용할 수 있는 분리된 GPG 서명 파일(repomd.xml.asc)이 함께 제공됩니다.

이 서명은 개별 패키지를 확인하는 기존 RPM 패키지 서명(gpgcheck)에 추가됩니다. 리포지토리 메타데이터 서명은 사용 가능한 패키지 목록 및 체크섬과 같은 리포지토리의 콘텐츠를 설명하는 메타데이터를 확인합니다.

패키지 서명은 각 패키지를 보호합니다. 이러한 패키지를 나열하는 메타데이터 인덱스는 TLS 및 체크섬을 기반으로만 신뢰할 수 있습니다. 인덱스에 서명이 없으면 손상된 미러 또는 전송 경로가 보안 업데이트를 숨기거나 차단하는 수정된 메타데이터를 제공할 수 있습니다. 리포지토리 메타데이터 서명은이 격차를 해소하며 미러 또는 전송 신뢰에 의존하지 않습니다.

리포지토리 메타데이터 서명 작동 방식

AL2023 리포지토리가 게시되면AWS KMS 키를 사용하여 리포지토리 메타데이터(repomd.xml)에 서명됩니다. 결과 분리된 서명(repomd.xml.asc)은 리포지토리의 메타데이터와 함께 배치됩니다.

리포지토리 구성repo_gpgcheck에서를 활성화하면 DNF는 리포지토리 메타데이터를 사용하기 전에 GPG 퍼블릭 키에 대해 repomd.xml.asc 서명을 확인합니다. 확인에 실패하면는 메타데이터를 DNF 거부하고 해당 리포지토리에서 패키지 작업을 실행하지 않습니다.

처음으로 DNF 리포지토리의 메타데이터를 확인하면 해당 리포지토리의 서명 키를 리포지토리별 키링으로 가져오라는 메시지가 표시됩니다. 이 프롬프트의 기본값은 입니다No. 거부하면가 리포지토리를 DNF 건너뜁니다. 에 대한 자세한 내용은 DNF 구성 repo_gpgcheck참조를 참조하세요.

패키지 확인에 이미 사용된 것과 동일한 키이지만 메타데이터 확인을 위해 별도의 키링에 DNF 저장합니다. 키가 이미 디스크에 있더라도 확인하라는 메시지가 표시됩니다. 이는 예상되는 DNF 동작입니다.

다음 AL2023 리포지토리에는 서명된 메타데이터가 포함됩니다.

  • 코어 리포지토리(amazonlinux)

  • 커널 Livepatch 리포지토리(kernel-livepatch)

  • NVIDIA 리포지토리(amazonlinux-nvidia)

  • Amazon Linux 리포지토리용 보조 패키지(amazonlinux-spal)

gpgcheck와의 차이점 repo_gpgcheck

설정 확인 항목 AL2023의 기본값
gpgcheck=1 설치 전에 개별 RPM 패키지의 GPG 서명을 확인합니다. 활성화됨
repo_gpgcheck=1 리포지토리를 사용하기 전에 리포지토리 메타데이터(repomd.xml)의 GPG 서명을 확인합니다. 기본 설정은 비활성화입니다.

자동화가 준비되었는지 확인한 repo_gpgcheckgpgcheck 및를 모두 활성화하는 것이 좋습니다. 이렇게 하면 사용 전에 리포지토리 메타데이터와 개별 패키지가 모두 확인됩니다. 를 활성화하기 전에 단원을 repo_gpgcheck참조하십시오자동화에서 리포지토리 메타데이터 확인 사용.

리포지토리 메타데이터 확인 활성화

구성 파일을 업데이트하여 개별 리포지토리에 대한 리포지토리 메타데이터 확인을 활성화할 수 있습니다.

중요

리포지토리 메타데이터 서명 확인은 기본적으로 활성화되어 있지 않습니다. 사용자가 변경할 때까지 비활성화된 상태로 유지됩니다. 활성화하기 전에 자동화의 모든 무인 DNF 명령이 -y 옵션을 통과하는지 확인합니다. 자세한 내용은 자동화에서 리포지토리 메타데이터 확인 사용 단원을 참조하십시오.

특정 리포지토리에 대해 활성화

repo_gpgcheck=0 기본적으로의 AL2023 리포지토리 구성 파일이 /etc/yum.repos.d/ 설정되어 있습니다. 리포지토리 메타데이터 확인을 활성화하려면 리포지토리 구성1에서이 값을 로 변경합니다. 예를 들어 코어 리포지토리에 대해 활성화하려면

[amazonlinux] name=Amazon Linux 2023 repository ... gpgcheck=1 repo_gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-linux-2023

리포지토리 메타데이터 확인 비활성화

이전 동작으로 돌아가려면 리포지토리 구성 파일repo_gpgcheck=0에서를 설정합니다. 다음 메타데이터 새로 고침은 확인 없이 성공합니다.

[ec2-user ~]$ sudo sed -i 's/^repo_gpgcheck=1/repo_gpgcheck=0/' /etc/yum.repos.d/amazonlinux.repo [ec2-user ~]$ sudo dnf -y makecache

리포지토리 메타데이터 서명이 작동하는지 확인

를 활성화repo_gpgcheck=1한 후 DNF 캐시를 지우고 메타데이터를 새로 고쳐 메타데이터 확인이 작동하는지 확인할 수 있습니다.

[ec2-user ~]$ sudo dnf clean metadata [ec2-user ~]$ sudo dnf makecache

는 리포지토리의 메타데이터를 처음 DNF 확인하면 해당 리포지토리의 서명 키를 가져오라는 메시지를 표시합니다. y를 입력하여 확인합니다. 키를 가져온 후는 오류 없이 메타데이터 캐시를 DNF 생성합니다. 출력은 다음과 비슷합니다.

Amazon Linux 2023 repository 1.7 MB/s | 1.8 kB 00:00 Importing GPG key 0xD832C631: Userid : "Amazon Linux <amazon-linux@amazon.com>" Fingerprint: B21C 50FA 44A9 9720 EAA7 2F7F E951 904A D832 C631 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-linux-2023 Is this ok [y/N]: y Amazon Linux 2023 repository 18 MB/s | 55 MB 00:03 Metadata cache created.

가져오기 프롬프트의 기본값은 입니다No. 거부하면가 리포지토리를 DNF 건너뛰고 출력Ignoring repositories에 보고합니다. 확인에 실패하면는 GPG 서명 오류를 DNF 보고하고 캐시를 생성하지 않습니다.

무인 실행은 단원을 참조하십시오자동화에서 리포지토리 메타데이터 확인 사용.

자동화에서 리포지토리 메타데이터 확인 사용

참고

키 가져오기 프롬프트의 기본값은 입니다No. 무인 DNF 실행은 프롬프트에 응답할 수 없으므로 가져오기를 거부하고 리포지토리를 건너뜁니다. AL2023은 skip_if_unavailable=True를 설정하므로 명령은 여전히 상태로 종료됩니다0. 따라서 호스트가 패키지나 업데이트를 수신하지 않는 동안 자동화가 성공을 보고합니다. 이 기호는 출력Ignoring repositories에 있습니다.

이를 방지하려면 연속 통합 작업, 이미지 및 컨테이너 빌드, , 구성 관리 및 cron 작업을 포함하여 메타데이터를 새로 고치는 모든 무인 DNF 명령cloud-init-y 옵션을 전달합니다.

[ec2-user ~]$ sudo dnf -y makecache [ec2-user ~]$ sudo dnf -y check-update [ec2-user ~]$ sudo dnf -y upgrade

메타데이터를 새로 고치는 명령에는가 필요합니다-y. 로컬 캐시 또는 로컬 RPM 데이터베이스만 읽거나 -C 옵션을 사용하는 명령은 메타데이터를 새로 고치지 않고 프롬프트를 표시하지 않습니다. 전체 목록은 리포지토리 메타데이터를 새로 고치는 명령 단원을 참조하십시오.

자동화-y를 영구적으로 유지합니다. 키는 호스트당 한 번이 아니라 리포지토리 URL당 한 번 가져옵니다. AL2023은 잠긴 버전(releasever) 및AWS리전에서 각 리포지토리 URL을 빌드하므로 OS 버전 업그레이드 또는 리전 변경이 새 URL로 확인되고 다시 프롬프트가 표시됩니다. 서명 키는 변경되지 않고 키링 위치만 변경됩니다. 다음 버전 업그레이드 또는 리전에서 새 키링을 사용하고 다시 프롬프트를 표시하므로 키를 미리 묶거나 미리 베이크하지 마십시오.

를 실행하면 캐시된 메타데이터가 dnf clean all지워지지만 동일한 버전 내에서 가져온 키는 제거되지 않습니다. 프롬프트를 다시 트리거하지 않습니다.

컨테이너 이미지 빌드에는 특별한 주의가 필요합니다. 이미지 빌드의 모든 RUN dnf 단계는 무인이며 키링은 이미지 파일 시스템의 일부이므로 모든 새 이미지에서 비어 있기 시작합니다. 실행 중인 호스트가 이미 가져온 것과 관계없이 빌드 중에 프롬프트가 나타납니다. 이미지 빌드-y를 전달합니다.

참고

Python 라이브러리(import dnf)DNF로 주행하는 경우 프롬프트가 적용되지 않습니다. 라이브러리는 프롬프트 없이 키를 가져오므로 메타데이터는 없이 로드됩니다-y.

리포지토리 메타데이터를 새로 고치는 명령

리포지토리 메타데이터를 다운로드하거나 새로 고치는 모든 명령은 키 가져오기와 프롬프트를 트리거합니다. 로컬 캐시 또는 로컬 RPM 데이터베이스만 읽는 명령은 읽지 않습니다. 옵션은 결과를 변경합니다. 예를 들어 -vrepolist 가져오기, --installed 유지 listinfo 로컬을 만들-C거나 가져오기를 --cacheonly 방지하고 --refresh 강제로 적용합니다. 의심스러운 경우를 전달합니다-y.

명령 메타데이터를 새로 고칩니다.
dnf makecache
dnf check-update
dnf upgrade, dnf update
dnf upgrade-minimal
dnf distro-sync
dnf install
dnf reinstall
dnf downgrade
dnf autoremove
dnf swap
dnf list (기본값 또는 --available)
dnf info (기본값 또는 --available)
dnf search
dnf provides
dnf repoquery
dnf repoinfo
dnf deplist
dnf repository-packages
dnf updateinfo
dnf group (목록, 정보, 설치)
dnf module (목록, 정보)
dnf shell (하위 명령이 가져오는 경우)
dnf builddep
dnf changelog
dnf debuginfo-install
dnf download
dnf repoclosure
dnf repograph
dnf reposync
dnf debug-dump
dnf repolist -v (구체적으로 설명)
dnf repolist (일반 또는 --all)아니요
dnf list --installed, dnf info --installed아니요
dnf remove, dnf erase아니요
dnf mark아니요
dnf history아니요
dnf check아니요
dnf clean아니요
dnf config-manager아니요
dnf needs-restarting아니요
dnf alias아니요
dnf help아니요
dnf repomanage아니요
dnf repodiff아니요(두 리포지토리의 이름이 지정되지 않은 경우 오류)
dnf copr아니요
dnf groups-manager아니요
dnf playground아니요
dnf debug-restore아니요(저장된 덤프에서 작동)
-C 또는를 사용하는 모든 명령 --cacheonly아니요

이러한 방식으로 건너뛴 리포지토리는 출력Ignoring repositories에서 로 보고되지만 AL2023이를 설정0하기 때문에 이러한 명령의 대부분은 여전히 상태로 종료됩니다skip_if_unavailable=True. 종료 코드에만 의존하지 마십시오. 키 가져오기가 성공-y하도록 전달합니다.

건너뛴 리포지토리 감지

종료 코드만으로는 확인이 성공했는지 확인하지 않습니다. 건너뛴 리포지토리가를 종료0하고 실행이 리포지토리를 가져오면 서명 키가 지속되므로 이전 단계가 실패하는 동안 이후 검사가 통과할 수 있습니다. 대신 다음 두 가지 검사를 사용합니다.

  • 자동화를 감사합니다. 모든 메타데이터 가져오기 DNF 명령이를 통과하는지 확인합니다-y. 이렇게 하면 다음 새 리포지토리 URL에서 계속 작업할 수 있습니다.

  • 출력에서를 확인합니다Ignoring repositories. 파이프라인 실패에 사용할 수 있는 리포지토리를 건너뛰면 다음 명령이 실패합니다.

[ec2-user ~]$ sudo dnf makecache 2>&1 | grep -q "Ignoring repositories" && { echo "repo skipped"; exit 1; }

고정된 버전

releasever (--releasever, /etc/dnf/vars/releasever또는를 사용하여dnf.conf)를 이전 릴리스된 버전에 고정하면 2023.11.20260406해당 버전에는 서명 파일이 없으며 리포지토리를 새로 고치지 repo_gpgcheck=1 못합니다.

Error: Failed to download metadata for repo 'amazonlinux': GPG verification is enabled, but GPG signature is not available...

고정된 버전은 해당 버전 이후의 업데이트를 수신하지 않습니다. 고정할 경우 버전 2023.11.20260406 이상에 고정하거나를 설정합니다repo_gpgcheck=0.

AL2023 리포지토리용 GPG 퍼블릭 키

리포지토리 메타데이터 확인에 사용되는 GPG 퍼블릭 키는 해당 리포지토리 구성 RPMs에서에 설치합니다/etc/pki/rpm-gpg/. 다음 표에는 각 리포지토리에서 사용하는 퍼블릭 키가 나열되어 있습니다.

리포지토리 패키지 서명 키 Repodata 서명 키 에 배포됨
코어(amazonlinux) RPM-GPG-KEY-amazon-linux-2023 RPM-GPG-KEY-amazon-linux-2023 system-release
커널 Livepatch(kernel-livepatch) RPM-GPG-KEY-amazon-linux-2023 RPM-GPG-KEY-amazon-linux-2023 system-release
NVIDIA(amazonlinux-nvidia) RPM-GPG-KEY-NVIDIA-D42D0685 RPM-GPG-KEY-amazon-linux-2023-nvidia nvidia-release
SPAL(amazonlinux-spal) RPM-GPG-KEY-amazonlinux-spal RPM-GPG-KEY-amazonlinux-spal spal-release

이러한 키는 해당 리포지토리 구성 RPM을 설치할 때 자동으로 설치됩니다.