Я хочу иметь одно место, где я определил ключи ssh для своих пользователей. Эти пользователи могут быть в разных (нескольких) ролях на одном сервере. Поэтому я определил ssh_authorized_key как виртуальный, а затем захотел реализовать их в разных ролях. Пример:
@ssh_authorized_key {
"user_a":
tag => ['deployer', 'developer', 'root'],
key => "xxx",
type => "ssh-dss",
ensure => present;
"user_b":
tag => ['deployer', 'root'],
key => "yyy",
type => "ssh-dss",
ensure => present;
"user_c":
tag => ['root', 'deployer'],
key => 'zzz',
type => "ssh-rsa",
ensure => present;
}
А потом реализовать их для множественный пользователи на не замужем узел:
Ssh_authorized_key<| tag == 'root' |> {
user => 'root'
}
Ssh_authorized_key<| tag == 'deployer' |> {
user => 'deployer'
}
Но puppet установит сертификаты только для одного пользователя. Я считаю, что основная концепция моего решения неверна. Но я не могу понять, как установить один сертификат для нескольких пользователей?
Вы правы в том, что основная концепция вашего решения неверна, но я думаю, что это неверно намного раньше, чем вы подозреваете. Лучшая практика - не делиться счетами; каждый пользователь должен иметь индивидуальную учетную запись и использовать sudo
для выполнения задач, требующих дополнительных привилегий. Если честно должен поделитесь одной или несколькими учетными записями, а затем разрешите своим пользователям sudo su - ACCOUNT
вместо того, чтобы входить напрямую как ACCOUNT. Например:
user { 'alice': groups => ['developer', 'deployer', 'root'] # other params... }
ssh_authorized_key { 'alice': #params }
Затем добавьте соответствующие записи в свой /etc/sudoers
(также, надеюсь, управляется марионеткой!):
# deployer group can run the deployment script without a password.
%deployer ALL = NOPASSWD: /usr/local/bin/deploy
# developer group can run commands as 'developer'
%developer ALL = (developer) ALL
# or, if you actually *must* allow them to log in as 'developer'
%developer ALL = /usr/bin/su developer