Skip to main content
本指南深入介绍了每个支持的提供商,使您能够充分利用 Cloudlist 的功能,实现全面的资产可见性和控制。

主要云服务提供商

AWS (Amazon Web Services)

支持的 AWS 服务: 示例配置: Amazon Web Services 可以使用以下配置块进行集成。
- provider: aws # provider 是提供商的名称
  # id 是用户定义的用于过滤的名称(可选)
  id: staging
  # aws_access_key 是 AWS 账户的访问密钥
  aws_access_key: $AWS_ACCESS_KEY
  # aws_secret_key 是 AWS 账户的秘密密钥
  aws_secret_key: $AWS_SECRET_KEY
  # aws_session_token 通过 STS 检索的临时安全凭证的会话令牌(可选)
  aws_session_token: $AWS_SESSION_TOKEN
  # assume_role_name 是要承担的角色名称(可选)
  assume_role_name: $AWS_ASSUME_ROLE_NAME
  # account_ids 是具有类似假定角色名称的 aws 账户 ID(可选)
  account_ids:
    - $AWS_ACCOUNT_ID_1
    - $AWS_ACCOUNT_ID_2
aws_access_keyaws_secret_key 可以在 IAM 控制台中生成。我们建议创建一个具有 只读 权限的新 IAM 用户,并提供该用户的访问令牌。 所需范围: 以下范围可以直接提供给 IAM 用户。
EC2 - AmazonEC2ReadOnlyAccess
Route53 - AmazonRoute53ReadOnlyAccess
S3 - AmazonS3ReadOnlyAccess
Lambda - AWSLambda_ReadOnlyAccess
ELB - ElasticLoadBalancingReadOnly
Cloudfront - CloudFrontReadOnlyAccess
为了支持其他服务,提供了一个自定义策略文档,可以直接复制粘贴到角色中,以允许正确和最小的权限。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RequiredReadPermissions",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeRegions",
                "route53:ListHostedZones",
                "route53:ListResourceRecordSets",
                "s3:ListAllMyBuckets",
                "lambda:ListFunctions",
                "elasticloadbalancing:DescribeLoadBalancers",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:DescribeTargetHealth",
                "cloudfront:ListDistributions",
                "ecs:ListClusters",
                "ecs:ListServices",
                "ecs:ListTasks",
                "ecs:DescribeTasks",
                "ecs:DescribeContainerInstances",
                "eks:ListClusters",
                "eks:DescribeCluster",
                "apigateway:GET",
                "lightsail:GetInstances",
                "lightsail:GetRegions"
            ],
            "Resource": "*"
        }
    ]
} 
参考资料:
  1. https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam_read-only-console.html
  2. https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html
  3. https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html

GCP (Google Cloud Platform)

支持的 GCP 服务: 示例配置: Google Cloud Platform 可以使用以下配置块进行集成。
- provider: gcp # provider 是提供商的名称
  # profile 是提供商配置文件的名称
  id: logs
  # gcp_service_account_key 是具有列表权限的 Google Cloud 服务账户的精简 JSON
  gcp_service_account_key: '{xxxxxxxxxxxxx}'
gcp_service_account_key 可以通过创建新的服务账户获取。为此,在 IAM 中创建具有 cloudresourcemanagerdns 范围的只读访问权限的服务账户。接下来,按照参考资料 2 中的步骤为服务账户生成新的账户密钥。这将提供一个 JSON,可以在 gcp_service_account_key 中作为单行粘贴。 所需范围: Cloud DNS, GKE 参考资料:
  1. https://cloud.google.com/iam/docs/service-account-overview

Azure

支持的 Azure 服务:
  • 虚拟机
示例配置: Microsoft Azure 可以使用以下配置块进行集成。
- provider: azure # provider 是提供商的名称
  # id 是用户定义的用于过滤的名称(可选)
  id: staging
  # client_id 是 Azure 账户注册应用程序的客户端 ID(如果使用 CLI 认证则不需要)
  client_id: $AZURE_CLIENT_ID
  # client_secret 是 Azure 账户注册应用程序的密钥 ID(如果使用 CLI 认证则不需要)
  client_secret: $AZURE_CLIENT_SECRET
  # tenant_id 是 Azure 账户注册应用程序的租户 ID(如果使用 CLI 认证则不需要)
  tenant_id: $AZURE_TENANT_ID
  # subscription_id 是 Azure 订阅 ID
  subscription_id: $AZURE_SUBSCRIPTION_ID
  # use_cli_auth 如果设置为 true,cloudlist 将使用 Azure CLI 认证
  use_cli_auth: true
tenant_idclient_idclient_secret 可以从 All services > Azure Active Directory > App registrations 获取/生成 subscription_id 可以从 All services > Subscriptions 检索 要使用 CLI 认证,请将 use_cli_auth 值设置为 true 并在终端中运行 az login 参考资料:
  1. https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli
  2. https://docs.microsoft.com/en-us/cli/azure/ad/sp?view=azure-cli-latest#az_ad_sp_create_for_rbac
  3. https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli

阿里云 (Alibaba Cloud)

支持的阿里云服务:
  • ECS 实例
示例配置: 阿里云可以使用以下配置块进行集成。
- provider: alibaba # provider 是提供商的名称
  # id 是用户定义的用于过滤的名称(可选)
  id: staging
  # alibaba_region_id 是资源的区域 ID
  alibaba_region_id: $ALIBABA_REGION_ID
  # alibaba_access_key 是阿里云账户的访问密钥 ID
  alibaba_access_key: $ALIBABA_ACCESS_KEY
  # alibaba_access_key_secret 是阿里云账户的秘密访问密钥
  alibaba_access_key_secret: $ALIBABA_ACCESS_KEY_SECRET
阿里云访问密钥 ID 和密钥可以通过访问 https://ram.console.aliyun.com/manage/ak 创建 参考资料:
  1. https://www.alibabacloud.com/help/faq-detail/142101.htm
  2. https://www.alibabacloud.com/help/doc-detail/53045.htm

VPS 和 PaaS 托管提供商

DO (DigitalOcean)

支持的 DigitalOcean 服务:
  • 实例
示例配置: Digitalocean 可以使用以下配置块进行集成。
- provider: do # provider 是提供商的名称
  # id 是用户定义的用于过滤的名称(可选)
  id: xxxx
  # digitalocean_token 是 Digitalocean 云平台的 API 密钥
  digitalocean_token: $DIGITALOCEAN_TOKEN
digitalocean_token 可以从 Digitalocean 控制面板生成。我们建议仅给予令牌读取访问权限。 参考资料:
  1. https://www.digitalocean.com/docs/apis-clis/api/create-personal-access-token/

SCW (Scaleway)

支持的 Scaleway 服务:
  • 实例
示例配置: Scaleway 可以使用以下配置块进行集成。
- provider: scw # provider 是提供商的名称
  # scaleway_access_key 是 Scaleway API 的访问密钥
  scaleway_access_key: $SCALEWAY_ACCESS_KEY
  # scaleway_access_token 是 Scaleway API 的访问令牌
  scaleway_access_token: $SCALEWAY_ACCESS_TOKEN
scaleway_access_keyscaleway_access_token 可以从 Scaleway 控制台的 Credentials Options 生成。 参考资料:
  1. https://www.scaleway.com/en/docs/generate-api-keys/

Heroku

支持的 Heroku 服务:
  • 应用程序
示例配置: Heroku 可以使用以下配置块进行集成。
- provider: heroku # provider 是提供商的名称
  # id 是用户定义的用于过滤的名称(可选)
  id: staging
  # heroku_api_token 是 Heroku 账户的 API 密钥
  heroku_api_token: $HEROKU_API_TOKEN
heroku_api_token 可以从 https://dashboard.heroku.com/account/applications/authorizations/new 生成 也可以使用 Heroku CLI 创建:
$ heroku authorizations:create -d "brief description of token"
Creating OAuth Authorization... done
Client:      <none>
ID:          a6e98151-f242-4592-b107-25fbac5ab410
Description: brief description of token
Scope:       global
Token:       cf0e05d9-4eca-4948-a012-b9xxxxxxxxxx
Updated at:  Fri Jun 16 2021 13:26:56 GMT-0700 (PDT) (less than a minute ago)
参考资料:
  1. https://devcenter.heroku.com/articles/platform-api-quickstart#authentication

Linode

支持的 Linode 服务:
  • 实例
示例配置: Linode 可以使用以下配置块进行集成。
- provider: linode # provider 是提供商的名称
  # id 是用户定义的用于过滤的名称(可选)
  id: staging
  # linode_personal_access_token 是 Linode 账户的个人访问令牌
  linode_personal_access_token: $LINODE_PERSONAL_ACCESS_TOKEN
linode_personal_access_token 可以从 https://cloud.linode.com/id/tokens 创建。所需的最小范围是 Linodes 资源的 只读 权限。 参考资料:
  1. https://www.linode.com/docs/guides/getting-started-with-the-linode-api/#get-an-access-token

CDN 和 DNS 管理

Fastly

支持的 Fastly 服务:
  • 服务
示例配置: Fastly 可以使用以下配置块进行集成。
- # provider 是提供商的名称
 provider: fastly
 # id 是用户定义的用于过滤的名称(可选)
 id: staging
 # fastly_api_key 是 Fastly 账户的个人 API 令牌
 fastly_api_key: $FASTLY_API_KEY
fastly_api_key 可以从 https://manage.fastly.com/account/personal/tokens 生成 参考资料:
  1. https://docs.fastly.com/en/guides/using-api-tokens#creating-api-tokens

Namecheap

支持的 Namecheap 服务:
  • 域名列表
示例配置: Namecheap 可以使用以下配置块进行集成。
- provider: namecheap # provider 是提供商的名称
  # id 是用户定义的用于过滤的名称(可选)
  id: staging
  # namecheap_api_key 是 Namecheap 账户的 API 密钥
  namecheap_api_key: $NAMECHEAP_API_KEY
  # namecheap_user_name 是 Namecheap 账户的用户名
  namecheap_user_name: $NAMECHEAP_USER_NAME
Namecheap API 访问可以通过访问 https://ap.www.namecheap.com/settings/tools/apiaccess/ 启用,然后:
  • 打开 API 访问开关
  • 将您的公共 IP 添加到白名单 IP
参考资料:
  1. https://www.namecheap.com/support/api/intro/
    • 启用 API 访问
    • IP 白名单

Cloudflare

支持的 Cloudflare 服务:
  • DNS
示例配置: Cloudflare 可以使用以下配置块进行集成。
- provider: cloudflare # provider 是提供商的名称
  # email 是 Cloudflare 的电子邮件
  email: $CF_EMAIL
  # api_key 是 Cloudflare 的 API 密钥
  api_key: $CF_API_KEY
  # api_token 是 Cloudflare 的范围 API 令牌(可选)
  api_token: $CF_API_TOKEN
api_key 可以从 Cloudflare API 密钥管理器生成。由于 Cloudflare 新 API 令牌的限制,它需要是全局 API 密钥。 参考资料:
  1. https://developers.cloudflare.com/api/keys

Hetzner Cloud

支持的 Hetzner Cloud 服务:
  • 实例
示例配置: Hetzner Cloud 可以使用以下配置块进行集成。
- provider: hetzner # provider 是提供商的名称
  # id 是用户定义的用于过滤的名称(可选)
  id: staging
  # auth_token 是 Hetzner 的认证令牌
  auth_token: $HETZNER_AUTH_TOKEN
参考资料:
  1. https://docs.hetzner.cloud/#authentication

基础设施自动化和管理

Kubernetes (K8s)

支持的 Kubernetes 服务:
  • 服务
  • 入口
示例配置: 要集成 Kubernetes,请使用下面概述的配置块。此块允许您通过文件路径或直接提供编码的 kubeconfig 内容来指定 Kubernetes 连接详细信息。如果同时指定了 kubeconfig_file 和 kubeconfig_encoded,将优先使用 kubeconfig_encoded。
- provider: kubernetes # provider 是提供商的名称
  # id 是提供商 id 的名称
  id: staging
  # kubeconfig_file 是 kubeconfig 文件的路径
  kubeconfig: path/to/kubeconfig
  # context 是要从 kubeconfig 文件使用的上下文
  context: <context-name>
参考资料:
  1. https://www.redhat.com/sysadmin/kubeconfig
  2. https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html
  3. https://learn.microsoft.com/en-us/azure/aks/control-kubeconfig-access#get-and-verify-the-configuration-information
  4. https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl#store_info

Hashicorp 工具

使用 Cloudlist,您可以从 Nomad、Consul 和 Terraform 获取资产。Cloudlist 可以直接查询 Nomad 和 Consul,并将使用 Terraform 状态文件列出 Terraform 创建的资产。

Nomad

Hashicorp Nomad 可以使用以下配置块进行集成。 示例配置:
- provider: nomad # provider 是提供商的名称
  # nomad_url 是 Nomad 服务器的 URL
  nomad_url: http:/127.0.0.1:4646/
  # nomad_ca_file 是 Nomad CA 文件的路径
  # nomad_ca_file: <path-to-ca-file>.pem
  # nomad_cert_file 是 Nomad 证书文件的路径
  # nomad_cert_file: <path-to-cert-file>.pem
  # nomad_key_file 是 Nomad 证书密钥文件的路径
  # nomad_key_file: <path-to-key-file>.pem
  # nomad_token 是 Nomad 认证令牌
  # nomad_token: <nomad-token>
  # nomad_http_auth 是 Nomad HTTP 认证值
  # nomad_http_auth: <nomad-http-auth-value>
nomad_url 中指定 https 会自动开启 SSL。除了 nomad_url 外,所有字段都是可选的。 参考资料:
  1. https://www.nomadproject.io/api-docs

Consul

Hashicorp Consul 可以使用以下配置块进行集成。 示例配置:
- provider: consul # provider 是提供商的名称
  # consul_url 是 Consul 服务器的 URL
  consul_url: http://localhost:8500/
  # consul_ca_file 是 Consul CA 文件的路径
  # consul_ca_file: <path-to-ca-file>.pem
  # consul_cert_file 是 Consul 证书文件的路径
  # consul_cert_file: <path-to-cert-file>.pem
  # consul_key_file 是 Consul 证书密钥文件的路径
  # consul_key_file: <path-to-key-file>.pem
  # consul_http_token 是 Consul 认证令牌
  # consul_http_token: <consul-token>
  # consul_http_auth 是 Consul HTTP 认证值
  # consul_http_auth: <consul-http-auth-value>
consul_url 中指定 https 会自动开启 SSL。除了 consul_url 外,所有字段都是可选的。 参考资料:
  1. https://www.consul.io/api-docs

Terraform

示例配置: Terraform 可以使用以下配置块进行集成。
- provider: terraform # provider 是提供商的名称
  # id 是用户定义的用于过滤的名称(可选)
  id: staging
  # tf_state_file 是 Terraform 状态文件的位置 (terraform.tfstate) 
  tf_state_file: path/to/terraform.tfstate

OpenStack

支持的 OpenStack 服务:
  • 实例
示例配置:
- provider: openstack # provider 是提供商的名称
 # id 是提供商 id 的名称
 id: staging
 # identity_endpoint 是用于认证的 OpenStack 身份端点
 identity_endpoint: $OS_IDENTITY_ENDPOINT
 # domain_name 是用于认证的 OpenStack 域名
 domain_name: $OS_DOMAIN_NAME
 # tenant_name 是 OpenStack 项目名称
 tenant_name: $OS_TENANT_NAME
 # username 是用于认证的 OpenStack 用户名
 username: $OS_USERNAME
 # password 是用于认证的 OpenStack 密码
 password: $OS_PASSWORD