)
网络安全认证鉴权运维后端【免费下载链接】teleportThe easiest, and most secure way to access and protect all of your infrastructure.项目地址https://gitcode.com/gh_mirrors/tel/teleport点击查看免费下载导读本文以 Teleport 仓库中的 examples/aws/terraform/starter-cluster 示例为核心系统讲解如何在 AWS 上基于 Teleport 官方预构建 AMI用 Terraform 在单个 EC2 实例上快速拉起一个 all-in-oneauth、node、proxy 三合一的 Teleport 集群。读完本文你将掌握该示例的完整工作原理、全部可调参数、从make apply到创建首个用户并登录 Web 控制台的完整操作流程以及它背后的源码级实现细节。适用前提与限制该示例定位为 demo、概念验证PoC与学习用途切勿直接用于生产环境。它只搭建单节点集群不包含高可用、多副本与故障转移能力适合 fork 后按需改造。一、这个示例解决什么问题Teleport 官方为 AWS 发布了预配置好的 AMI同时提供 OSS、Enterprise、Enterprise FIPS 三种镜像族这些 AMI 内置了 systemd 服务单元与初始化 bash 脚本只需要在启动实例时以环境变量形式传入配置即可让实例自动生成/etc/teleport.d/conf配置并拉起一个功能完整的 Teleport 集群。starter-cluster 正是利用这一特性它不手写 Teleport 配置文件而是通过 Terraform 的templatefile渲染 data.tpl把一堆TELEPORT_*环境变量写进 EC2 实例的user_data由 AMI 内置的引导脚本见 assets/aws 下的 systemd units 与 bash 脚本完成后续的自动配置。正如 data.tpl 所示最终生成的是形如下面的环境变量文件TELEPORT_ROLEauth,node,proxy EC2_REGIONus-west-2 TELEPORT_AUTH_SERVER_LBlocalhost TELEPORT_AUTH_TYPElocal TELEPORT_CLUSTER_NAMETeleportCluster1 TELEPORT_DOMAIN_ADMIN_EMAILsupportexample.com TELEPORT_DOMAIN_NAMEcluster.example.com TELEPORT_EXTERNAL_HOSTNAMEcluster.example.com TELEPORT_DYNAMO_TABLE_NAMETeleportCluster1 TELEPORT_DYNAMO_EVENTS_TABLE_NAMETeleportCluster1-events TELEPORT_LICENSE_PATH TELEPORT_LOCKS_TABLE_NAMETeleportCluster1-locks TELEPORT_PROXY_SERVER_LBcluster.example.com TELEPORT_S3_BUCKETteleport.example.com TELEPORT_ENABLE_MONGODBfalse TELEPORT_ENABLE_MYSQLfalse TELEPORT_ENABLE_POSTGRESfalse USE_LETSENCRYPTtrue USE_ACMfalse USE_TLS_ROUTINGtrue这种 AMI 环境变量 的模式大幅降低了部署门槛你无需关心 Teleport 二进制安装、systemd 单元编写、证书签发细节只需聚焦于 DNS、存储与网络资源编排。二、它会创建哪些 AWS 资源2.1 默认创建的资源Teleport all-in-one 集群 EC2 实例auth、node、proxy三种角色运行在同一台实例上见 cluster.tf3 张 DynamoDB 表见 dynamo.tfcluster_name存放集群状态cluster statecluster_name-events存放审计事件cluster eventscluster_name-locks为 SSL 证书生成与续期提供简单分布式锁ssl lock1 个 S3 桶存储会话录制session recording见 s3.tfRoute53A记录将自定义域名指向实例见 route53.tfSecurity Groups 与 IAM 角色前者控制网络入站规则cluster_sg.tf后者授权实例访问 SSM、S3、DynamoDB 等 AWS 资源cluster_iam.tf。2.2 可选创建的资源通过变量开关详见下文参数详解还可以额外创建Application Load BalancerALB在使用 ACM 证书时启用见 cluster_lb.tfACM 证书及其 Route53 DNS 校验记录见 acm.tf。三、工作原理从 user_data 到可用的集群整个启动链路可以拆成三步Terraform 渲染 user_dataaws_instance.cluster通过templatefile(data.tpl, {...})把变量填充为环境变量脚本cluster.tf。AMI 内置引导Teleport 官方 AMI 里包含一系列 systemd units 与 bash 脚本位于仓库 assets/aws/files/system 与 assets/aws/files/bin实例首次启动时会读取/etc/teleport.d/conf执行teleport-generate-config之类的工具生成最终 Teleport 配置如teleport.yaml再启动 auth / node / proxy 进程。从 data.tpl 的注释可以看出使用 ACM 时 TLS routing 会被teleport-generate-config自动启用。依赖 AWS 托管服务集群状态、审计事件与证书锁写入 DynamoDB会话录制写入 S3从而让单机实例也具备持久化能力。因此从源码结构看starter-cluster 与 AMI 引导代码的分工是Terraform 只负责资源编排 参数注入Teleport 自身的配置生成完全交给 AMI。这也解释了为什么示例中的变量几乎都能在 vars.tf 与 data.tpl 之间一一对应。四、环境要求Terraform v1.0由 data.tf 中的required_version 1.0, 2.0.0约束同时要求hashicorp/awsprovider~ 5.0AWS CLI v1.14用于aws ec2 describe-images查询 AMI、校验凭据等一个已注册的 Route53 托管区root zone例如example.com目标区域存在可用的 EC2 Key PairAWS 控制台 EC2 Key Pairs用于 SSH 登录实例。此外data.tf 还会通过 data source 自动获取当前账号的默认 VPC、默认 VPC 下全部子网、AMI 镜像按var.ami_name过滤、取最新、owner 为146628656107即 Teleport 官方 AMI 发布账号与 Route53 zone 信息无需手工填写这些 ID。五、快速开始三步走仓库根目录的 Makefile 封装了全部常用命令命令行为make plan依次执行terraform init与terraform plan输出将要创建的资源清单建议先运行它核对是否符合预期make apply执行terraform init与terraform apply开始实际创建资源make destroy执行terraform init与terraform destroy删除已创建的资源make destroy-yes-i-want-to-do-this以-auto-approve方式强制销毁不二次确认请确认你真的想执行完整步骤按下一节说明配置好所有变量后运行make applySSH 登录新实例ssh ec2-usercluster_domain在实例上创建用户该命令同时会创建 Teleport 用户并允许其以本地ec2-user身份登录节点OSS 版sudo tctl users add username --rolesaccess,editor --loginsec2-userEnterprise 版tctl users add --rolesaccess,editor username --loginsec2-user点击make apply输出中的注册链接即 outputs.tf 中的cluster_web_address设置密码并配置 2FA token完成此时你已经拥有一个功能完整的 Teleport 集群可通过tsh login --proxycluster_domain或 Web 控制台接入。六、参数详解完整变量清单示例通过TF_VAR_*环境变量或直接写在 Makefile 中向 Terraform 传参。以下清单完整覆盖 README 与 vars.tf 中的全部变量可直接复制使用# Region to run in - we currently have AMIs in the following regions: # ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-south-1, ap-southeast-1, ap-southeast-2, ca-central-1, eu-central-1 # eu-north-1, eu-west-1, eu-west-2, eu-west-3, sa-east-1, us-east-1, us-east-2, us-west-1, us-west-2 TF_VAR_region ? us-west-2 # Cluster name is a unique cluster name to use, should be unique and not contain spaces or other special characters TF_VAR_cluster_name ? TeleportCluster1 # AWS SSH key pair name to provision in installed instances, must be a key pair available in the above defined region (AWS Console EC2 Key Pairs) TF_VAR_key_name ? example # Full absolute path to the license file, on the machine executing Terraform, for Teleport Enterprise. # This license will be copied into AWS SSM and then pulled down on the auth nodes to enable Enterprise functionality TF_VAR_license_path ? /path/to/license # AMI name contains the version of Teleport to install, and whether to use OSS or Enterprise version # These AMIs are published by Teleport and shared as public whenever a new version of Teleport is released # To list available AMIs: # OSS: aws ec2 describe-images --owners 146628656107 --filters Namename,Valuesteleport-oss-* # Enterprise: aws ec2 describe-images --owners 146628656107 --filters Namename,Valuesteleport-ent-* # FIPS images are also available for Enterprise customers, look for -fips on the end of the AMIs name TF_VAR_ami_name ? teleport-ent-18.10.0-arm64 # Route 53 hosted zone to use, must be a root zone registered in AWS, e.g. example.com TF_VAR_route53_zone ? example.com # Subdomain to set up in the zone above, e.g. cluster.example.com # This will be used for users connecting to Teleport proxy TF_VAR_route53_domain ? cluster.example.com # Set to true to add a wildcard subdomain entry to point to the proxy, e.g. *.cluster.example.com # This is used to enable Teleport Application Access export TF_VAR_add_wildcard_route53_recordtrue # Enable adding MongoDB listeners in Teleport proxy, load balancer ports, and security groups # This will be ignored if TF_VAR_use_tls_routingtrue export TF_VAR_enable_mongodb_listenerfalse # Enable adding MySQL listeners in Teleport proxy, load balancer ports, and security groups # This will be ignored if TF_VAR_use_tls_routingtrue export TF_VAR_enable_mysql_listenerfalse # Enable adding Postgres listeners in Teleport proxy, load balancer ports, and security groups # This will be ignored if TF_VAR_use_tls_routingtrue export TF_VAR_enable_postgres_listenerfalse # Bucket name to store Teleport session recordings. export TF_VAR_s3_bucket_nameteleport.example.com # AWS instance type to provision for running this Teleport cluster export TF_VAR_cluster_instance_typet4g.micro # Email to be used for Lets Encrypt certificate registration process. export TF_VAR_emailsupportexample.com # Set to true to use Lets Encrypt to provision certificates export TF_VAR_use_letsencrypttrue # Set to true to use ACM (Amazon Certificate Manager) to provision certificates # If you wish to use a pre-existing ACM certificate rather than having Terraform generate one for you, you can import it: # terraform import aws_acm_certificate.cert certificate_arn # Note that TLS routing is automatically enabled when using ACM with the starter-cluster Terraform, meaning: # - you must use Teleport and tsh v13 # - you must use tsh proxy commands for Kubernetes/database access export TF_VAR_use_acmfalse # Set to true to use TLS routing to multiplex all Teleport traffic over one port # Setting this will disable ALL separate listener ports. # This setting is automatically set to true when using ACM with the starter-cluster Terraform # and will be ignored. export TF_VAR_use_tls_routingtrue # This value can be used to change the default authentication type used for the Teleport cluster. # This is useful for persisting a different default authentication type across AMI upgrades when you have a SAML, OIDC # or GitHub connector configured in DynamoDB. The default is local. # Teleport Community Edition supports local or github # Teleport Enterprise Edition supports local, github, oidc, or saml # Teleport Enterprise FIPS deployments have local authentication disabled, so should use github, oidc, or saml export TF_VAR_teleport_auth_typelocal # plan make plan6.1 参数速查表变量默认值必填说明region-是部署区域需与所选 AMI 发布区域一致cluster_name-是集群名称须唯一且不含空格与特殊字符同时用作 DynamoDB 主表名key_name-是目标区域中已有的 EC2 Key Pair 名称license_path否Teleport Enterprise 许可证文件的绝对路径执行 Terraform 的机器上会被复制进 AWS SSM 再下发到 auth 节点ami_name-是镜像名命名含 Teleport 版本与 OSS/Enterprise 标识route53_zone-是已注册的 Route53 根域如example.comroute53_domain-是集群访问子域如cluster.example.comadd_wildcard_route53_recordtrue否是否添加*.cluster.example.com通配记录以支持 Application Accessenable_mongodb_listenerfalse否是否启用 MongoDB 监听TLS routing 开启时忽略enable_mysql_listenerfalse否是否启用 MySQL 监听TLS routing 开启时忽略enable_postgres_listenerfalse否是否启用 Postgres 监听TLS routing 开启时忽略s3_bucket_name-是会话录制存储桶名称email-是用于 Lets Encrypt 证书注册的邮箱cluster_instance_type-是EC2 实例规格如t4g.micro、t3.microuse_letsencrypttrue否是否使用 Lets Encrypt 签发证书与 ACM 互斥使用 ACM 时自动禁用use_acmfalse否是否使用 ACM 证书开启后自动启用 TLS routinguse_tls_routingfalse否是否用 TLS routing 将全部流量复用到一个端口443会禁用所有独立监听端口teleport_auth_typelocal否集群默认认证类型见下方说明6.2 关键参数说明与坑点TF_VAR_ami_name命名规则为teleport-{oss|ent}-版本-{arm64|x86_64}FIPS 镜像名以-fips结尾。可用下面的命令动态查询当前可用的公开 AMI# OSS aws ec2 describe-images --owners 146628656107 --filters Namename,Valuesteleport-oss-* # Enterprise aws ec2 describe-images --owners 146628656107 --filters Namename,Valuesteleport-ent-*仓库的 examples/aws/terraform/AMIS.md 维护了一份按区域列出的公开 AMI ID 清单覆盖 OSS、Enterprise、Enterprise FIPS 三类镜像随新版本发布持续更新例如us-west-2 v18.10.0 arm64 OSS: ami-0f4171a117a7d59b1。TF_VAR_teleport_auth_type用于在 AMI 升级时持久化默认认证类型当你已通过 DynamoDB 配置了 SAML/OIDC/GitHub connector 时尤其有用。取值限制社区版支持local或github企业版支持local、github、oidc、samlEnterprise FIPS 部署禁用了本地认证应使用github、oidc或saml。TF_VAR_use_acm与TF_VAR_use_letsencrypt互斥从 data.tpl 的注释Lets Encrypt will be automatically disabled if using ACM可见二者只能取其一。ACM 模式会自动启用 TLS routing此时必须使用 Teleport 与 tsh v13且 Kubernetes/数据库访问需使用tsh proxy系列命令。TLS routing开启后 Teleport 将 SSH、Kubernetes、数据库等所有协议流量统一复用到 443 端口因此所有独立监听端口3022-3026、3036、5432、27017在安全组与负载均衡器中都会被关闭见 cluster_sg.tf 中count var.use_acm ? 0 : 1的条件写法。网络白名单vars.tf 中的额外变量allowed_ssh_ingress_cidr_blocks默认[0.0.0.0/0]允许访问 SSH 22 端口的 CIDRallowed_ingress_cidr_blocks默认[0.0.0.0/0]允许访问 443 及全部 Teleport 服务端口的 CIDRallowed_egress_cidr_blocks默认[0.0.0.0/0]实例出站 CIDR。七、项目布局与源码级剖析示例目录 examples/aws/terraform/starter-cluster 下每个文件职责清晰文件职责acm.tfACM 证书申请与 DNS 校验记录cluster.tfEC2 实例模板与user_data注入cluster_iam.tfIAM 角色授权实例访问 SSM、S3、DynamoDB 等cluster_lb.tfApplication Load Balancer使用 ACM 时cluster_sg.tf安全组与入站网络规则data.tfTerraform/provider 版本、AWS data source 与变量来源data.tplTeleport 配置环境变量模板user_datadynamo.tfDynamoDB 表状态、事件、锁outputs.tfTerraform 输出用于获取集群信息route53.tfRoute53 zone 与记录创建s3.tfS3 桶会话录制存储ssm.tfTeleport 许可证分发Enterprisevars.tf全部输入变量定义7.1 EC2 实例与安全加固cluster.tf 中除了user_data注入还包含两项安全加固metadata_options中http_tokens required强制使用 IMDSv2避免 SSRF 类风险root_block_device中encrypted true根卷启用 EBS 加密。7.2 DynamoDB 三张表的职责dynamo.tf 完整定义了 Teleport 在 AWS 上的持久化拓扑cluster_name集群状态主键HashKey 排序键FullPath读写容量各 10开启 TTLExpires属性与 PITRcluster_name-events审计事件主键SessionIDEventIndex并建有timesearchV2全局二级索引CreatedAtDate/CreatedAt用于按时间检索审计日志cluster_name-locks证书锁主键Lock读写容量各 5采用PROVISIONED计费模式为 SSL 证书的生成与续期提供跨实例锁。三张表均开启服务端加密与 PITR并在lifecycle中ignore_changes容量类变更避免 Terraform 每次 plan 都尝试改回默认容量。7.3 安全组端口规划cluster_sg.tf 展示了一张完整的端口矩阵端口用途是否受use_acm影响22SSH否443Teleport Web 界面否3022-3026Teleport 各服务监听端口SSH、Proxy、Kube 等是ACM 模式下关闭3036MySQL 监听可选是5432Postgres 监听可选是27017MongoDB 监听可选是从count条件如var.enable_mysql_listener ? !var.use_acm ? 1 : 0 : 0可以清晰看到数据库监听端口只有在对应 listener 开启且未使用 ACM时才放行这与 TLS routing 复用 443 的架构设计保持一致。7.4 输出变量make apply完成后可通过terraform output查看outputs.tfinstance_ip_public实例公网 IPcluster_name集群名称cluster_web_addressWeb 控制台地址ACM 与 Lets Encrypt 两种模式分别取 ALB 记录或 Route53 fqdnkey_nameSSH 使用的 Key Pair 名称。八、安全与运维建议仅用于演示/PoC/学习这是单节点 all-in-one 架构无高可用生产环境请参考 Teleport 多节点部署与高可用方案收敛安全组默认的0.0.0.0/0入站白名单适合快速验证正式使用前务必通过allowed_ssh_ingress_cidr_blocks/allowed_ingress_cidr_blocks收紧为可信来源 IP证书策略二选一明确use_letsencrypt与use_acm的取舍选择 ACM 后所有客户端tsh必须升级到 v13 以支持 TLS routing销毁谨慎make destroy会删除 DynamoDB、S3、Route53 记录等全部资源如需无确认强制销毁Makefile 额外提供了destroy-yes-i-want-to-do-this目标AMI 升级镜像内 Teleport 版本随 AMI 名变化升级 AMI 时注意保持 DynamoDB 中的既有连接器配置并通过teleport_auth_type固定默认认证类型。九、可参考的后续深入路径查看当前公开 AMI ID 全量清单examples/aws/terraform/AMIS.md研究 AMI 内部引导逻辑systemd units 与 bash 脚本assets/aws/files/system、assets/aws/files/bin探索 AWS AMI 的生成代码以便按需定制镜像assets/aws若需要多区域、多节点或生产级拓扑可从 examples/aws/terraform 目录下的其他 Terraform 示例入手改造。赞分享网络安全认证鉴权运维后端【免费下载链接】teleportThe easiest, and most secure way to access and protect all of your infrastructure.项目地址https://gitcode.com/gh_mirrors/tel/teleport点击查看免费下载相关推荐如何快速在AWS上部署Teleport集群使用Terraform的完整指南如何快速在AWS上部署Teleport集群使用Terraform的完整指南 Teleport是一款功能强大的开源基础设施访问保护工具能够统一管理服务器、Ku网络安全认证鉴权运维后端dotnet-starter-kit AWS 一键上云Terraform Starter 应用栈API 双 React SPA部署实战dotnet starter kit AWS 一键上云Terraform Starter 应用栈API 双 React SPA部署实战 导读 本篇文章后端前端示例工程认证鉴权Agent Starter Pack 部署指南Terraform CI/CD 一键上云实战Agent Starter Pack 部署指南Terraform CI/CD 一键上云实战 本指南以 Agent Starter Pack 官方部署文档为人工智能AI Agent开发工具代码生成LLMOps上一篇trackerslist技术解析如何通过优化Tracker配置提升BT下载效率下一篇MetaMask移动版完整教程从零开始构建你的加密钱包创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考