私は、1つのサーバーにsshとsudoアクセスを必要とし、他のサーバーにはアクセスできない請負業者がいるユースケースを持っています。私たちのサーバーはすべてシェフが管理しており、データバッグを使用して各ユーザーを設定しています。これにアプローチする最善の方法に関するヒントChefを使用して特定のサーバー/環境へのユーザーアクセスを制限する
2
A
答えて
2
いつもと同じように、 Here isの多種多様な可能性がありますが、users
データバッグに基づいてノードごとのユーザーアクセスを構成する方法はありますか。
group: sysadmin
を持つすべてのユーザが自動的にsudoを権限ですべてのノードに割り当てられています。- 他のすべてのユーザーは、特定のホストへの割り当てに基づいて追加されます。
users
データバッグは データ袋の"nodes"
キーでnode['fqdn']
のエントリ含むアイテムが検索される:すべてのノードからユーザを除去するために
{
"id": "a-srv123-admin",
...
"nodes": {
"srv123.typo3.org": {
"sudo": "true"
}
}
}
を、action: remove
を設定することができる 最高レベル:
{
"id": "a-user-to-remove",
"action": "remove"
}
特定のノードからユーザを除去するために、action: remove
を設定することができるノードレベルでのは:
node_attribute = "fqdn"
log "Searching for users associated with node #{node[node_attribute]}"
begin
users = search(users_databag_name, "nodes:#{node[node_attribute]}")
rescue Net::HTTPServerException
Chef::Log.warn "Searching for users in the 'users' databag failed, search for users associated with node '#{node[node_attribute]}'"
users = {}
end
users.each do |u|
node_options = u['nodes'][node[node_attribute]]
Chef::Log.info "Got node options: #{node_options}"
if u['action'] == "remove" || node_options['action'] == "remove"
user u['username'] ||= u['id'] do
action :remove
end
else
# snip...
# Create user object.
user u['username'] do
uid u['uid'] if u['uid']
gid u['gid'] if u['gid']
shell u['shell']
comment u['comment']
password u['password'] if u['password']
supports manage_home: true
home home_dir
action u['action'] if u['action']
end
# sudo management
if node_options['sudo'] == "true"
sudo u['username'] do
nopasswd true
user u['username']
end
else
sudo u['username'] do
action :remove
end
end
end
end
EDIT:
{
"id": "a-user-to-remove",
...
"nodes": {
"srv123.typo3.org": {
"action": "remove"
}
}
}
implementation of this(残念ながら、真実では非常にきれいではない)、単にnode[fqdn]
に関連付けられているすべてのユーザーを検索し、任意のユーザーを持つことに注意してシェフのクライアント証明書にアクセスすると、クライアントが読み取れるものに基づいてデータを照会できます。これには、他のノードの属性に格納されているパスワードを含めることができます。 RBACまたはchef-vaultはこれを軽減できます。
関連する問題
- 1. ブラウザプラグインの使用を特定のサーバーに制限しますか?
- 2. Oracle:rowdata = USERの行へのユーザーアクセスを制限する
- 3. 環境別ルートを制限する
- 4. サブドメインへのユーザーアクセスを制限する方法
- 5. テスト用に特定のドメインのみに電子メールを送信する環境を制限する(XP smtp IIS)
- 6. Joomlaの特定のExtensionへのユーザーアクセス
- 7. Laravel 5.2-ユーザーアクセスを制限する
- 8. 特定のカテゴリへのクエリの制限
- 9. LAMPベースCMSへの特定のクエリの使用を制限する方法
- 10. マシン/環境へのソフトウェアライセンスを制限する最善の方法は?
- 11. 特定のサブドメインへの特定の呼び出しを制限しますか?
- 12. Javaアプレットを開発して特定のディレクトリツリーへのアクセスを制限する
- 13. RESTful APIの特定のフィールドへの更新を制限する
- 14. 特定のカテゴリのページへのAPI検索を制限する
- 15. Expressを使用してNode.jsへのアクセスを制限する
- 16. パターンロックを使用してビューへのアクセスを制限する
- 17. セッションを使用してページへのアクセスを制限する
- 18. .htaccessを使用してファイルダウンロードへのアクセスを制限する
- 19. .htaccessを使用してファイルへのアクセスを制限する
- 20. Drupal 7:特定のユーザーロールへのファイルアクセスを制限する方法
- 21. 特定のユーザープロファイルへのアクセスを制限する
- 22. ASP.net - 特定のマシンへのユーザーログインを制限する
- 23. 特定のマシンへのユーザーログインを制限する方法は?
- 24. AWS特定のSQSキューへのアクセスを制限するIAMユーザポリシー
- 25. 特定のTeamCityプロジェクトへのアクセスを制限する
- 26. 特定のGoogleグループメンバーへのアクセスを制限する
- 27. dnd、特定のノードタイプへのドロップを制限する方法は?
- 28. インターネットアクセスが制限された環境でnpmを使用する方法
- 29. #!でPythonのバージョンを特定する方法環境変数を使用する
- 30. Android - 境界ボックスへのドラッグアンドドロップの制限