6 ответов
Утилита apt-key
apt-key используется для управления список ключей, используемых apt для проверки пакетов. Пакеты, проверенные с помощью этих ключей, будут считаться доверенными. Чтобы обновить локальную связку ключей связкой ключей архива Ubuntu и удалить из нее ключи архива, которые больше не действительны.
попробуйте установить что-нибудь …
ответ дан
20 March 2017 в 13:18
ntc2 по существу верен (во всяком случае для моего случая), но позвольте мне уточнить решение.
По какой-то причине я застрял 15.04, хотя он был настроен на автоматическое обновление. Независимо от того, сколько раз я обновлял / обновлял, новый выпуск не показывался, и я продолжал получать ошибку аутентификации при установке пакетов.
Однако я наконец понял, как принудительно выполнить обновление через официальный выпуск Ubuntu 15.10 (Wily Werewolf) Ноты.
Оказалось, что это довольно просто, и в моем случае все, что мне действительно было нужно, это последний шаг.
Теперь, когда я обновил, ошибка аутентификации устранена, и я могу устанавливать пакеты без проблем.
Проблема обновления — E: Метод дал недопустимое перенаправление 103 message
Это может быть связано, а может и не быть связано с проблемами обновления, поэтому я оставлю это здесь на случай, если кто-то еще столкнется с этим.
Если во время обновления вы столкнетесь со следующей ошибкой:
Возможно, вам придется очистить частичные файлы с помощью приведенных ниже инструкций и повторить обновление:
Это была последняя часть чтобы обновление прошло за меня.
ответ дан
20 March 2017 в 13:18
Мне было достаточно, чтобы исправить это.
ответ дан
20 March 2017 в 13:18
У меня была эта проблема на Ubuntu 12.10 (Quantal Quetzal). Та же проблема возникла, если я попытался использовать графический интерфейс Synaptic Package Manager.
Оказалось, что моя система все еще была настроена на использование прокси-сервера для сети, к которой я больше не был подключен и, следовательно, больше не мог использовать. После того как я отключил прокси-сервер, смог правильно аутентифицировать пакеты.
Чтобы отключить прокси в Ubuntu 12.10 (Quantal Quetzal), выполните следующие действия:
- Нажмите ] Кнопка Super на клавиатуре (также известная как кнопка с логотипом Windows)
- Введите Сеть и нажмите ввод
- Выберите Сетевой прокси
- Измените метод на Нет
- Щелкните Применить в масштабе системы
- теперь должен иметь возможность аутентифицировать пакеты
ответ дан
20 March 2017 в 13:18
Остерегайтесь корпоративных прокси!
Я получал для (среди других пакетов), находясь за прокси. Даже настройка `/etc/apt/apt.conf ‘и Настройки-> Сетевые настройки с конфигурацией прокси не позволяла установить или аутентифицировать пакеты.
Попытка (находясь за прокси):
Ключи не обновлялись, обновлял кое-что, без предупреждений или ошибок. Но мне все равно не удалось установить .
Решение:
- Подключиться напрямую к сети (т.е. избегать корпоративного прокси)
- Отключить конфигурацию прокси в Настройки и
Пакеты аутентифицируются, загружаются и установлен.
ответ дан
20 March 2017 в 13:18
У меня была эта проблема, оказалось, что это какая-то ошибка с австралийским сервером — кенгуру, свободные в верхнем паддоке, наверное. Я исправил это, изменив источник программного обеспечения в Мюоне с австралийского сервера на главный
ответ дан
20 March 2017 в 13:18
Запуск в виде контейнера Docker
В инструкции мы рассмотрели установку Hashicorp Vault как пакета. Также мы можем установить данный сервис в виде контейнера Docker из официального образа. Рассмотрим вкратце данный вопрос.
Для начала, необходимо установить в систему Docker. После загружаем образ
docker pull vault
Для запуска vault в режиме сервера вводим:
docker run —cap-add=IPC_LOCK —name vault -d -p 8200:8200 -e ‘VAULT_LOCAL_CONFIG={«backend»: {«file»: {«path»: «/vault/file»}}, «default_lease_ttl»: «168h», «max_lease_ttl»: «720h», «listener»: {«tcp»: {«address»: «127.0.0.1:8200», «tls_disable»: «true»}}}’ vault server
После заходим внутрь контейнера:
docker exec -it vault sh
Задаем системную переменную для подключения к vault по http:
export VAULT_ADDR=http://127.0.0.1:8200
Инициализируем сервер:
vault operator init
… и так далее.
Изменение PIN-кода Рутокен ЭЦП
Перед запуском процесса проверки смены PIN-кода Рутокен ЭЦП установите библиотеку PKCS#11 и определите путь до библиотеки librtpkcs11ecp.so.
Для того чтобы загрузить библиотеку PKCS#11:
Для того чтобы определить путь до библиотеки librtpkcs11ecp.so введите команду:
find /usr/*(lib|lib64) -name librtpkcs11ecp.so
Для изменения PIN-кода введите команду:
pkcs11-tool --module {A} --login --pin {B} --change-pin --new-pin {C}
A — путь до библиотеки librtpkcs11ecp.so.
B — текущий PIN-код устройства.
C — новый PIN-код устройства.
В результате PIN-код устройства будет изменен.
Добавление репозиториев с add-apt-repository
Основной синтаксис команды add-apt-repository следующий:
add-apt-repository repository
Где repository может быть либо обычная запись репозитория, которую можно добавить к файлу sources.list наподобие, deb http://repo.tld/ubuntu distro component либо репозиторий PPA в формате ppa:<user>/<ppa-name>.
Чтобы увидеть все доступные опции типа команды add-apt-repository man add-apt-repository в вашем терминале.
По умолчанию в Ubuntu 18.04 и новее add-apt-repository, он также обновляет индекс пакета, если импортирован открытый ключ репозитория.
Индекс пакетов – это база данных, которая содержит записи доступных пакетов из репозиториев, включенных в вашей системе.
Допустим, вы хотите установить MongoDB из своих официальных репозиториев.
Сначала импортируйте открытый ключ репозитория:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
Добавьте репозиторий MongoDB, используя команду ниже.
sudo add-apt-repository 'deb https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'
Репозиторий будет добавлен в файл sources.list.
Теперь вы можете установить любой из пакетов из недавно включенного репозитория:
sudo apt install mongodb-org
Если по каким-либо причинам вы хотите удалить ранее включенный репозиторий, используйте параметр –remove:
sudo add-apt-repository --remove 'deb https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'
Добавление репозиториев PPA
Персональные архивы пакетов (PPA) – это сервис, который позволяет пользователям загружать исходные пакеты Ubuntu, созданные и опубликованные с помощью Launchpad, в качестве подходящего хранилища.
При добавлении репозитория PPA, команда add-apt-repository создает новый файл в каталоге /etc/apt/sources.list.d/.
Например, чтобы добавить PPA Jonathon F, который предоставляет FFmpeg версии 4.x, вы должны выполнить:
sudo add-apt-repository ppa:jonathonf/ffmpeg-4
При появлении запроса нажмите Enter, репозиторий будет включен.
Press to continue or Ctrl-c to cancel adding it.
Открытый ключ репозитория PPA будет автоматически загружен и зарегистрирован.
После добавления PPA в вашу систему вы можете установить пакеты репозитория:
sudo apt install ffmpeg
Команда apt установит пакет и все его зависимости.
Подходящие источники
В Ubuntu и всех других дистрибутивах на основе Debian программные репозитории apt определяются в файле /etc/apt/sources.list или в отдельных файлах в каталоге /etc/apt/sources.list.d/.
Имена файлов репозитория внутри каталога /etc/apt/sources.list.d/ должны заканчиваться на .list.
Общий синтаксис файла /etc/apt/sources.list принимает следующий формат:
deb http://repo.tld/ubuntu distro component...
- Первая запись в строке определяет тип архива. Тип архива может быть как deb, таки deb-src. Deb подразумевает, что репозиторий содержит .debпакеты, а deb-src подразумевает пакеты с исходным кодом.
- Вторая запись – это URL хранилища.
- Третья запись указывает кодовое имя дистрибутива, например beaver, xenial и так далее.
- Последние записи являются компонентами или категориями репозитория. Репозитории Ubuntu по умолчанию разделены на четыре компонента – основной, ограниченный, юниверс и мультиверс. Как правило, сторонние репозитории имеют только одну категорию.
Формат файлов в каталоге /etc/apt/sources.list.d/ такой же, как и для обычного файла sources.list.
Большинство репозиториев предоставляют открытый ключ для аутентификации загруженных пакетов, которые необходимо загрузить и импортировать.
Чтобы иметь возможность добавить или удалить хранилище, вы должны войти в систему как пользователь с доступом sudo или root.
Обычно инструкции о том, как включить определенный репозиторий, включены в документацию программного обеспечения.
Проверка наличия сертификатов и ключевых пар на Рутокен ЭЦП
Перед запуском процесса проверки наличия сертификатов и ключевых пар на Рутокен ЭЦП загрузите и установите библиотеку PKCS#11, а также определите путь до библиотеки librtpkcs11ecp.so.
Для того чтобы загрузить библиотеку PKCS#11:
Для того чтобы определить путь до библиотеки librtpkcs11ecp.so введите команду:
find /usr/*(lib|lib64) -name librtpkcs11ecp.so
Чтобы проверить наличие сертификатов и ключевых пар на Рутокен ЭЦП введите команду:
pkcs11-tool --module {A} -O
A — путь до библиотеки librtpkcs11ecp.so.
В результате в окне Терминала отобразится информация обо всех сертификатах и ключевых парах, хранящихся на Рутокен ЭЦП.
Чтобы открыть сертификат или ключевую пару скопируйте ID необходимого объекта и введите команду:
pkcs11-tool --module {A} -r -y cert --id | openssl x509 -inform der -text
A — путь до библиотеки librtpkcs11ecp.so.
B — ID сертификата.
В результате в окне Терминала отобразится полная информация об указанном объекте.
Чтобы скопировать сертификат в файл введите команду:
{A}
A — путь до библиотеки librtpkcs11ecp.so.
B — ID сертификата.
C — имя файла.
5.2 Применение dpkg для поиска имен пакетов
Один из способов найти имя пакета — знать имя какого-либо важного файла,
находящегося в этом пакете. Например, чтобы найти пакет, которому принадлежит
некий файл «.h», нужный вам для компиляции, может
запустить:
@[/] # dpkg -S stdio.h libc6-dev: /usr/include/stdio.h libc6-dev: /usr/include/bits/stdio.h perl: /usr/lib/perl/5.6.0/CORE/nostdio.h
или:
@[/] # dpkg -S /usr/include/stdio.h libc6-dev: /usr/include/stdio.h
Чтобы найти имя пакета, установленного в вашей системе, что полезно, например,
если вы планируете почистить место на диске, дайте команду:
@[/] # dpkg -l | grep mozilla ii mozilla-browse 0.9.6-7 Mozilla Web Browser
Проблема этой команды в том, что она может «испортить» имя пакета. В
примере выше, полное имя пакета mozilla-browser. Чтобы это
исправить, вы можете изменить значение переменной окружения
COLUMNS:
@ $ COLUMNS=132 dpkg -l | grep mozilla ii mozilla-browser 0.9.6-7 Mozilla Web Browser - core and browser
или использовать описание или часть его следующим образом:
@[/] # apt-cache search "Mozilla Web Browser" mozilla-browser - Mozilla Web Browser
Источники Apt
В Ubuntu и всех других дистрибутивах на основе Debian репозитории программного обеспечения apt определены в файле или в отдельных файлах в каталоге .
Имена файлов репозитория в каталоге должны заканчиваться на .
Общий синтаксис файла имеет следующий формат:
- Первая запись в строке определяет тип архива. Тип архива может быть deb или deb-src . Deb подразумевает, что репозиторий содержит пакеты а deb-src подразумевает пакеты с исходным кодом.
- Вторая запись — это URL-адрес репозитория.
- Третья запись указывает кодовое имя распространения, например beaver, xenial и так далее.
- Последние записи — это компоненты или категории репозитория. Репозитории Ubuntu по умолчанию разделены на четыре компонента: основной, ограниченный, вселенная и мультивселенная. Как правило, сторонние репозитории имеют только одну категорию.
Формат файлов в каталоге такой же, как и для обычного файла .
Большинство репозиториев предоставляют открытый ключ для аутентификации загруженных пакетов, которые необходимо загрузить и импортировать.
Чтобы иметь возможность добавлять или удалять репозиторий, вам необходимо войти в систему как пользователь с доступом sudo или root.
Обычно инструкции по включению определенного репозитория включены в документацию по программному обеспечению.
Ошибка Unable to locate package error в Ubuntu
Дальше пошагово рассмотрим процесс устранения ошибки.
1. Проверьте имя пакета
Это первое, что вы должны сделать. Может, в названии пакета опечатка? Если вы пытаетесь установить vlc и написали vcl, то непременно ничего не получится. Опечатки – распространенная проблема, так что убедитесь в том, что вы не допустили ошибок во время ввода имени пакета.
2. Обновите кэш репозиториев
Если вы в первый раз запустили систему после установки, следует написать команду update:
Данная команда не обновит Ubuntu полностью. На деле, команда apt update составляет локальный список доступных для установки пакетов.
При использовании команды install, менеджер пакетов apt просматривает кэш, чтобы получить информацию о пакете и его версии, а затем скачать его из репозиториев в сети. Если пакета в кэше нет, система не сможет его установить.
Кэш в только что установленной системе изначально пуст. Именно поэтому вам стоит запустить команду apt update сразу после установки Ubuntu или других дистрибутивов, основанных на Ubuntu (например, Linux Mint).
Даже если система не новая, кэш apt вполне может оказаться устаревшим. В любой момент не лишним будет его обновить.
3. Убедитесь, что пакет доступен в вашей версии Ubuntu
Отлично! Вы проверили название пакета, и оно верно. Вы запустили команду update, чтобы обновить состояние кэша, но все ошибка unable to locate package все еще присутствует. Вполне возможно, что пакет попросту недоступен. Но вы следуете инструкции с какого-то сайта, и у всех получается установить его указанным образом. В чем может заключаться проблема?
Есть два варианта. Либо пакет доступен в репозитории Universe, который в вашей системе не включен, либо пакета вовсе не существует для вашей версии Ubuntu.
Первый шаг – проверьте, какая версия Ubuntu у вас запущена. Откройте терминал и введите следующую команду:
В результате вы увидите версию Ubuntu и ее кодовое название
Именно кодовое название нам важно больше всего. Как видите, мы используем Ubuntu 18.04 с кодовым именем bionic
У вас может быть иначе, но суть должна быть понятна. Как только вы получили сведения о версии и названии, откройте сайт Ubuntu Packages.
Пролистайте пониже и остановитесь на заголовке Поиск. Вы увидите поле с ключевым словом. Введите название пакета, который ваша система не может найти, и выберите соответствующее кодовое имя. Секцию поставьте любую. После проделанных действий, нажмите на кнопку поиска.
Вам будет показано, доступен ли пакет для вашей версии Ubuntu, и если это так, то вместе с этим отобразится репозиторий, в котором он находится. Мы искали средство создания скриншотов Shutter и вот, что вышло для Ubuntu 18.04 Bionic:
В нашем случае, название пакета точно совпало. Это значит, что пакет shutter существует для Ubuntu 18.04 Bionic, но в репозитории Universe.
Если необходимый пакет доступен для вашей версии Ubuntu, но в Universe или Multiverse, эти репозитории необходимо включить:
Также нужно обновить кэш для того, чтобы система узнала о новых пакетах, находящихся в подключенных репозиториях:
Теперь установка пакета должна пройти гладко.
Распечатывание
После установки, сервер Vault находится в запечатанном (sealed) состоянии. То есть, он не знает, как ему расшифровывать секреты, которые будут храниться в базе.
При попытке выполнить любую операцию с хранилищем секретов мы получим ошибку:
* Vault is sealed
Чтобы исправить ситуацию, нужно выполнить инициализацию сервера — мы получим ключи для распечатывания (Unseal Keys). После необходимо ввести эти ключи и можно будет авторизоваться в системе.
Инициализация, распечатывание и вход
Для начала, нам необходимо инициализировать наш сервер. Это выполняется командой:
vault operator init
Команда нам вернет 5 ключей. Любые 3 из них являются ключами для распечатывания сервера (Unseal Key). Также нам будет предоставлен токен для root (Initial Root Token), с помощью которого можно будет войти в систему vault.
И так, распечатаем наш сервер, введя по очереди 3 команды.
Для первого ключа:
vault operator unseal
Для второго:
vault operator unseal
И третьего:
vault operator unseal
После выполнения каждой команды система будет запрашивать ключ. Необходимо ввести любые 3 из сгенерированных ранее. При правильном вводе ключа, мы будем видеть общую информацию по ключу. А при вводе третьего ключа мы должны увидеть:
Sealed false
Это значит, что сервер больше не запечатан и с ним можно работать.
Теперь необходимо залогиниться в систему командой:
vault login
… и ввести ключ root, который мы получили после инициализации.
Мы можем выполнять команды для работы с Hashicorp Vault.
Автоматическое распечатывание
После перезагрузки нашего сервера он опять становится запечатанным. Предполагается, что полученных 5 ключей необходимо выдать пяти ответственным за безопасность сотрудникам. После перезагрузки, трое из них должны будут ввести свои данные. Это правильно с точки зрения безопасности.
Однако, если у нас есть причины автоматически поднимать сервер после перезагрузки, рассмотрим, как это сделать.
Данный способ противоречит безопасности, однако, реальная эксплуатация систем не всегда вписывается в рамки идеальных концепций.
Выполним настройку в несколько шагов.
1. Скрипт.
Создадим каталог для хранения скриптов:
mkdir /scripts
Создадим скрипт:
vi /scripts/unseal.sh
#!/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
sleep 10
vault operator unseal w1SgHSWyXm+7kwmYk4bFX2rBLG5jKxIn01DMkj57071D
vault operator unseal 38s4+FkxKTTANFZgCwEPFOgJIMwTvLca1j36yYPc3gdx
vault operator unseal 4xlpKVwPuNlskydM/qmCmW22x7WZdfuiFu92HGRNOa8o
* где w1SgHSWyXm+7kwmYk4bFX2rBLG5jKxIn01DMkj57071D, 38s4+FkxKTTANFZgCwEPFOgJIMwTvLca1j36yYPc3gdx и 4xlpKVwPuNlskydM/qmCmW22x7WZdfuiFu92HGRNOa8o — любых 3 токена (из 5 сгенерированных)
Обратите внимание, мы задерживаем выполнение скрипта на 10 секунд — на практике, сервис vault может не успеть запуститься, и мы тогда получим ошибку при выполнении команды vault operator unseal
Разрешаем запуск скрипта на выполнение:
chmod +x /scripts/unseal.sh
Можно, даже, выполнить скрипт:
/scripts/unseal.sh
В итоге, мы распечатаем наш сервер.
Большинство современных серверных систем работает на основе systemd. Рассмотрим автозапуск с помощью последней.
Создаем юнит:
vi /etc/systemd/system/vault-unseal.service
Description=Vault Auto Unseal Service
After=network.target
After=vault.service
Environment=»VAULT_ADDR=http://127.0.0.1:8201″
ExecStart=/scripts/unseal.sh
Type=oneshot
RemainAfterExit=no
WantedBy=multi-user.target
* в данном примере мы выполняем одну команду при запуске сервиса — запуск скрипта /scripts/unseal.sh. Перед этим мы создаем системную переменную VAULT_ADDR, чтобы при выполнении команд в скрипте система понимала, к какому серверу подключаться.
Перечитаем конфигурацию для systemd:
systemctl daemon-reload
Разрешаем автозапуск созданного сервиса:
systemctl enable vault-unseal
Пробуем перезагрузить сервер — vault должен оказаться распечатанным.
Настройка SSL
В инструкции выше мы настроили наше окружение для локального подключения по http. Данный метод временный, так как не позволит управлять системой с другого компьютера или придется жертвовать безопасностью. Рассмотрим процесс настройки запросов по защищенному протоколу https.
Первое, что нам нужно, это получить сертификат. Правильнее всего купить сертификат или запросить через Let’s Encrypt. После прописать в конфигурационном файле vault путь до данного сертификата. Но мы рассмотрим процесс получения самоподписанного сертификата, но при этом, который примет система. Для этого необходимо выполнить несколько условий:
- Сертификат должен быть выдан для hostname, по которому мы будем отправлять запросы.
- Для сертификата мы должны указать альтернативное имя subjectAltName.
И так, создаем каталог для хранения сертификатов:
mkdir /etc/ssl/vault
Проверяем версию openssl:
openssl version
Она должна быть 1.1.1 и выше. В противном случае, необходимо выполнить обновление OpenSSL. Как правило, данное действие требуется только на CentOS 7.
Генерируем сертификат:
openssl req -new -x509 -days 1461 -nodes -out /etc/ssl/vault/cert.pem -keyout /etc/ssl/vault/cert.key -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=vault.dmosk.local» -addext «subjectAltName = DNS:vault.dmosk.local»
* в данном примере мы сгенерируем необходимые ключи по пути /etc/ssl/vault; обязательно, нужно поменять значения vault.dmosk.local на имя сервера, который используется у вас.
Если команда вернет ошибку, проверяем, что у нас обновленная версия openssl, которая поддерживает ключ addext.
Теперь откроем конфигурационный файл hashicorp vault:
vi /etc/vault.d/vault.hcl
Приведем секцию HTTPS listener к виду:
# HTTPS listener
listener «tcp» {
address = «0.0.0.0:8200»
tls_cert_file = «/etc/ssl/vault/cert.pem»
tls_key_file = «/etc/ssl/vault/cert.key»
}
* необходимо поменять пути до файлов tls_cert_file и tls_key_file.
Перезапускаем сервис:
После перезагрузки сервиса, он станет запечатанным и нам нужно будет снова ввести 3 части ключа (команды vault operator unseal).
systemctl restart vault
Меняем в окружении переменную VAULT_ADDR:
export VAULT_ADDR=https://vault.dmosk.local:8200
* мы указываем протокол https, обращения должны выполняться по доменному имени, для которого мы получили сертификат; также указываем порт 8200.
Выполняем команду:
vault status
Мы должны получить состояние системы. Значит запросы по https работают.
И последнее, снова открываем файл:
vi /etc/environment
И также меняем значение для переменной VAULT_ADDR:
VAULT_ADDR=https://vault.dmosk.local:8200
5.3 Установка пакетов «по запросу»
Вы собираете пакет, и вдруг, бах! Ошибка из-за того, что нет какого-то там
нужного файла .h. От такого поворота событий вас может спасти
программа . Она запрашивает какие пакеты установить, если
они нужны, останавливает соответствующий процесс и продолжает его после
установки пакета.
Для этого, в основном, запустите:
auto-apt run command
Где `command’ — это команда, при выполнении которой может обнаружиться
отстутствие некоего файла. Например:
auto-apt run ./configure
Она запросит установку необходимых пакетов и вызовет apt-get автоматически.
Если вы работаете в X, то графический интерфейс будет по умолчанию заменен на
текстовый.
Auto-apt сохраняет базы данных в обновленном состоянии, чтобы быть более
эффективной. Это достигается вызовом команд auto-apt update,
auto-apt updatedb и auto-apt update-local.
Аутентификация и политики
Hashicorp Vault позволяет управлять доступами с помощью политик и токенов авторизации. Рассмотрим процесс настройки.
Работа с токенами
Для начала научимся управлять токенами. Простая команда для создания нового:
vault token create
Система сгенерирует новый ключ и сделает вывод на экран.
Также мы можем создать временный токен:
vault token create -period=1h
* на один час.
Посмотреть информацию о токене можно через его аксессор. Сначала получим список аксессоров:
vault list auth/token/accessors
После смотрим токен по аксессору:
vault token lookup -accessor uW9Ajr8VzFiCwHzHWn75qWVe
Войти в систему с помощью токена можно командой:
vault login
После вводим наш токен. Или одной командой:
vault login s.Db9j6Q4TvyFDr3j2aQmXttrX
Посмотреть информацию о токене, под которым мы зарегистрировались в системе, можно командой:
vault token lookup
А данной командой мы создаем пользователя и привязываем его к политике my-policy:
vault token create -policy=my-policy
Если политики нет в системе, то мы получим предупреждение:
WARNING! The following warnings were returned from Vault:
* Policy «my-policy» does not exist
Нас это не должно заботить — на следующем шаге мы ее создадим.
При необходимости привязать токен к нескольким политикам, перечисляем из в опциях policy:
vault token create -policy=my-policy -policy=my-policy2
Работа с политиками
Выше мы создали токен и привязали его к политике my-policy. Создадим ее:
vault policy write my-policy — << EOF
path «secret/data/foo/*» {
capabilities =
}
path «secret/data/hello/*» {
capabilities =
}
path «secret/data/*» {
capabilities =
}
EOF
* в данной политике мы разрешаем чтение всех секретов в secret. Для ранее созданного секрета secret/hello мы разрешим чтение и обновление записей, а для секрета secret/foo также мы разрешаем создавать записи
Обратите внимание, что на самом деле, данные хранятся в secret/data..
Посмотреть список политик можно командой:
vault policy list
Посмотреть информацию о конкретной политике можно командой:
vault policy read my-policy
Проверка политики
И так, мы создали токен, привязали его к политике, создали саму политику. Проверим, что наши права работают.
Если нужно, можно создать еще токен и привязать его к нашей политике:
vault token create -policy=my-policy
Зарегистрируемся с нужным нам токеном (который привязан к проверяемой политике):
vault login
Попробуем сначала создать секрет в ветке secret/foo и в нем указать пару ключ-значение:
vault kv put secret/foo/new foo=world
Команда должна выполниться успешно.
Теперь сделаем то же самое для secret/hello
vault kv put secret/hello/new foo=world
Мы должны получить ошибку
Error writing data to secret/data/hello/new: Error making API request.
URL: PUT http://127.0.0.1:8201/v1/secret/data/hello/new
Code: 403. Errors:
* 1 error occurred:
* permission denied
Теперь логинимся под токеном с полными правами и добавим запись:
vault kv put secret/hello/new foo=world
И снова заходим под токеном с ограниченными правами. Пробуем обновить запись:
vault kv put secret/hello/new foo=world2
Команда должна выполниться успешно, так как мы разрешили политикой обновлять записи.
Аутентификация на основе пользователей
Также в Hashicorp Vault мы можем создать пользователя с паролем и привязать к нему политику. Администратор сможем входить в систему под учетной записью, а не с помощью токена.
Разрешаем метод auth по пути userpass:
vault auth enable userpass
Создаем пользователя:
vault write auth/userpass/users/dmosk password=»test-pass» policies=»my-profile»
* данной командой мы создали пользователя dmosk с паролем test-pass и привязали его к политике my-profile.
Войти в систему можно командой:
vault login -method=userpass username=dmosk
Вводим пароль и попадаем в систему под пользователем dmosk. Можно выполнить тесты, которые мы .