私は、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. TeamCity権限を使用して、特定のビルドパラメータへのユーザーアクセスを制限します。
- 2. ブラウザプラグインの使用を特定のサーバーに制限しますか?
- 3. ローカルネットワーク内のドッカー開発環境へのアクセスを制限する
- 4. Oracle:rowdata = USERの行へのユーザーアクセスを制限する
- 5. Django:自分のオブジェクトへのユーザーアクセスを制限する
- 6. AWS RDSはデータベースへのユーザーアクセスを制限しますか?
- 7. Dynamoのリソース/テーブルへのアクセスを特定の環境に制限する方法はありますか?
- 8. 環境別ルートを制限する
- 9. サブドメインへのユーザーアクセスを制限する方法
- 10. SoftLayer APIユーザーアクセス制限
- 11. テスト用に特定のドメインのみに電子メールを送信する環境を制限する(XP smtp IIS)
- 12. Joomlaの特定のExtensionへのユーザーアクセス
- 13. Chef:環境変数を属性に設定する
- 14. ClickHouseでユーザーアクセス権を制限する
- 15. Laravel 5.2-ユーザーアクセスを制限する
- 16. SoftLayer API:SoftLayerポータルではなく、SoftLayer APIを使用してDNS管理へのユーザーアクセスを制限できますか?
- 17. マシン/環境へのソフトウェアライセンスを制限する最善の方法は?
- 18. 特定のカテゴリへのクエリの制限
- 19. LAMPベースCMSへの特定のクエリの使用を制限する方法
- 20. 特定のサブドメインへの特定の呼び出しを制限しますか?
- 21. 特定のカテゴリのページへのAPI検索を制限する
- 22. RESTful APIの特定のフィールドへの更新を制限する
- 23. Javaアプレットを開発して特定のディレクトリツリーへのアクセスを制限する
- 24. Expressを使用してNode.jsへのアクセスを制限する
- 25. パターンロックを使用してビューへのアクセスを制限する
- 26. .htaccessを使用してファイルダウンロードへのアクセスを制限する
- 27. .htaccessを使用してファイルへのアクセスを制限する
- 28. セッションを使用してページへのアクセスを制限する
- 29. インターネットアクセスが制限された環境でnpmを使用する方法
- 30. 特定のマシンへのユーザーログインを制限する方法は?