Проверка цифровой подписи в закрытом контуре
Для проверки цифровой подписи в Neuvector используются компоненты и методики проекта Sigstore. Инфраструктура для осуществления полного цикла цифровой подписи по умолчанию доступна в сети Интернет, однако вы можете развернуть нижеперечисленные компоненты локально:
-
Rekor - сервер журналирования артефактов;
-
Fulcio - служба выдачи временных сертификатов;
-
Cosign - инструмент подписи образов контейнеров и артефактов.
Далее представлено краткое руководство по запуску инфраструктуры для реализации процессов цифровой подписи.
1. Подготовка сервера
Подготовьте отдельный сервер для установки компонентов Sigstore. Выполните установку на сервер ПО Docker.
2. Установка Cosign
Выполните установку последней доступной версии из репозитория.
3. Установка сервера Rekor
Выполните сборку и запуск Rekor с помощью Docker Compose:
git clone https://github.com/sigstore/rekor.git
cd rekor
git checkout tags/v1.3.9
docker compose -f docker-compose.yml up -d
После установки проверьте, что сервер инициализирован, и его лог доступен:
# curl http://localhost:3000/api/v1/log
{"inactiveShards":null,"rootHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e
4649b934ca495991b7852b855","signedTreeHead":"a1d947edf108 -
6903076924831886960\n0\n47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=\n\n—
a1d947edf108
bmbN4zBFAiArgMWxaNRdNZX3Zfvz2Vxyv4rdO/fvSh/WFKnkudhmogIhAPJpNQj4wUM6WkWLUA
QNa9AUV19DDa+YyDWG5pw7URZ3\n","treeID":"6903076924831886960","treeSize":0
}
Получите публичный ключ Rekor:
# curl localhost:3000/api/v1/log/publicKey
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/UTpADGGAmntz/Vi7LMfRXqgcS6l
je7WTMm2zHNpj4/WT8XSrExq00Cb5vrgisSLufJkxkPaRLFCLH5rAt3w4w==
-----END PUBLIC KEY-----
4. Установка сервера Fulcio
Выполните сборку и запуск Fulcio с помощью Docker Compose:
git clone https://github.com/sigstore/fulcio.git
cd fulcio
git checkout tags/v1.6.6
docker compose -f docker-compose.yml up -d
Получите корневой сертификат Fulcio:
# curl -X GET http://localhost:5555/api/v1/rootCert
-----BEGIN CERTIFICATE-----
MIICFjCCAb2gAwIBAgIUFlLnHDwqponlw4BE+FD3W0pZ40YwCgYIKoZIzj0EAwIw
aDEMMAoGA1UEBhMDVVNBMQswCQYDVQQIEwJXQTERMA8GA1UEBxMIS2lya2xhbmQx
FTATBgNVBAkTDDc2NyA2dGggU3QgUzEOMAwGA1UEERMFOTgwMzMxETAPBgNVBAoT
CHNpZ3N0b3JlMB4XDTI1MDIyNjE0NTAxMFoXDTM1MDIyNjE0NTAxMFowaDEMMAoG
A1UEBhMDVVNBMQswCQYDVQQIEwJXQTERMA8GA1UEBxMIS2lya2xhbmQxFTATBgNV
BAkTDDc2NyA2dGggU3QgUzEOMAwGA1UEERMFOTgwMzMxETAPBgNVBAoTCHNpZ3N0
b3JlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9UryrQoVkO/18FeXpR7/BYdJ
FuGMEq5V3ssnUEMZURGOa6GLxQsFKkSPL8xHKUoMkiCyA+r6sXXwTMxFedQECqNF
MEMwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQEwHQYDVR0OBBYE
FAOgPppZOXpC2bew48TuabKNfGH+MAoGCCqGSM49BAMCA0cAMEQCIB/2EBYLHce0
nr/5ZomjiKRCoFMvxvAVaicpzOCoELIlAiADa3/cjVJuHdeo85EUC13MX1cT9uHI
FZCkzktJN2lxmw==
-----END CERTIFICATE-----
5. Использование Cosign
Сгенерируйте ключевую пару для дальнейшей подписи образов и подпишите необходимый образ:
cosign sign --key cosign.key --fulcio-url=http://172.31.100.160:5555 -- (1)
rekor-url=http://172.31.100.160:3000 hub.universe.nova.fstek.local/novaadmin/ (1)
nginx-signed:latest
Enter password for private key:
WARNING: Image reference hub.universe.nova.fstek.local/nova-admin/nginxsigned: (2)
latest uses a tag, not a digest, to identify the image to sign.
This can lead you to sign a different image than the intended one.
Please use a
digest (example.com/ubuntu@sha256:abc123...) rather than tag
(example.com/ubuntu:latest) for the input to cosign. The ability to
refer to
images by tag will be removed in a future release.
The sigstore service, hosted by sigstore a Series of LF Projects, LLC,
is provided pursuant to the Hosted Project Tools Terms of Use, available
at https://lfprojects.org/policies/hosted-project-tools-terms-of-use/.
Note that if your submission includes personal data associated with
this signed artifact, it will be part of an immutable record.
This may include the email address associated with the account with
which you authenticate your contractual Agreement.
This information will be used for signing this artifact and will be
stored in public transparency logs and cannot be removed later, and is
subject to the Immutable Record notice at
https://lfprojects.org/policies/hosted-project-tools-immutable-records/.
By typing 'y', you attest that (1) you are not submitting the personal
data of any other person; and (2) you understand and agree to the
statement and the Agreement terms at the URLs listed above.
Are you sure you would like to continue? [y/N] y
tlog entry created with index: 0
Pushing signature to: hub.universe.nova.fstek.local/nova-admin/nginxsigned (2)
| 1 | 172.31.100.160 - IP-адрес сервера, на который выполнена установка компонентов Sigstore; |
| 2 | hub.universe.nova.fstek.local/nova-admin/nginx-signed:latest - путь к образу контейнера в хранилище. |
6. Настройка Neuvector
В разделе Sigstore Verifiers добавьте новый доверенный источник:
-
Укажите имя, например,
private-root; -
Укажите атрибут, например
Private; -
В качестве Rekor Public Key укажите публичный ключ сервера Rekor, полученный ранее.
-
В качестве Root Certificate укажите сертификат сервера Fulcio, полученный ранее.
-
Добавьте публичный ключ, с помощью которого осуществлялась цифровая подпись образа.
-
Для добавленного хранилища выполните повторное сканирование образов и проверьте результаты подписи.