gpt4 book ai didi

docker - 使用 Terraform 和 Cloud-init 安全地设置 Ubuntu vm

转载 作者:行者123 更新时间:2023-12-04 18:33:12 28 4
gpt4 key购买 nike

对于个人使用(和乐趣),我正在尝试设置一个我想在其上托管我的网站的 VM(在 docker 容器中运行的 Nginx、Django 和 Postgres)。我正在尝试学习如何以安全的方式使用 Terraform 和 Cloud init 设置服务器。
我当前的云初始化代码:

#cloud-config
groups:
- docker
users:
- default
# the docker service account
- name: test
shell: /bin/bash
home: /home/test
groups: docker
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_import_id: None
lock_passwd: true
ssh-authorized-keys:
- ssh-rsa my_public_ssh_key
package_update: true
package_upgrade: true
packages:
- git
- sudo
- apt-transport-https
- ca-certificates
- curl
- gnupg-agent
- software-properties-common
runcmd:
# install docker following the guide: https://docs.docker.com/install/linux/docker-ce/ubuntu/
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- sudo apt-get -y update
- sudo apt-get -y install docker-ce docker-ce-cli containerd.io
- sudo systemctl enable docker
# install docker-compose following the guide: https://docs.docker.com/compose/install/
- sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
power_state:
mode: reboot
message: Restarting after installing docker & docker-compose
虚拟机是 Ubuntu 20.04
从技术上讲,我希望“测试”用户能够从我的 git 存储库中提取最新代码并使用 docker-compose (重新)部署网站(在/home/test/website 中)。用户是否可能没有 sudo 权限(我不想让它具有提升的权限)。其次:如何使用单独的 SSH key 创建一个 root 帐户(这是否是一个安全的设置)?
生成 VM 的 Terraform 代码。
resource "scaleway_instance_server" "app_server" {
type = var.instance_type
image = "ubuntu-focal"
name = var.instance_name
enable_ipv6 = true

tags = [ "FocalFossa", "MyUbuntuInstance" ]

root_volume {
size_in_gb = 20
delete_on_termination = true
}

lifecycle {
create_before_destroy = true
}

ip_id = scaleway_instance_ip.public_ip.id

security_group_id = scaleway_instance_security_group.www.id

# cloud init: setup
cloud_init = file("${path.module}/cloud-init.yml")
}
非常感谢您的帮助。

最佳答案

Is it possible that the user does not have sudo permissions (I don't want to have it have elevated permissions).


cloud-init 运行的任何内容都以 root 身份运行,包括 bootcmd/runcmd 命令。要以不同的用户身份运行,您可以使用 sudo在你的运行命令中。
sudo -u test whoami >> /var/tmp/run_cmd
会写 test/var/tmp/run_cmd .

And secondly: how do I create a root account with a separate SSH key (and would this be a safe setup)?


您的 users部分看起来像这样。
users:
- default
# the docker service account
- name: test
shell: /bin/bash
home: /home/test
groups: docker
sudo: ALL=(ALL) NOPASSWD:ALL
lock_passwd: true
ssh-authorized-keys:
- ssh-rsa my-public-key
- name: root
ssh-authorized-keys:
- ssh-rsa root-public-key
disable_root: false
安全吗?我认为这是有争议的,但默认情况下禁用 root 登录是有原因的。应该可以 ssh 进入默认用户,然后 sudo su满足您的根访问需求。
另外,仅供引用, ssh_import_id: None在您的配置中引发了 cloud-init 日志中的异常,因为它试图为用户 None 导入 ssh id .

关于docker - 使用 Terraform 和 Cloud-init 安全地设置 Ubuntu vm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66307185/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com