Documentation Index
Fetch the complete documentation index at: https://projectdiscovery.sec-lab.cn/llms.txt
Use this file to discover all available pages before exploring further.
本指南深入介绍了每个支持的提供商,使您能够充分利用 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_key 和 aws_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": "*"
}
]
}
参考资料:
- https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam_read-only-console.html
- https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html
- https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html
支持的 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 中创建具有 cloudresourcemanager 和 dns 范围的只读访问权限的服务账户。接下来,按照参考资料 2 中的步骤为服务账户生成新的账户密钥。这将提供一个 JSON,可以在 gcp_service_account_key 中作为单行粘贴。
所需范围: Cloud DNS, GKE
参考资料:
- 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_id、client_id、client_secret 可以从 All services > Azure Active Directory > App registrations 获取/生成
subscription_id 可以从 All services > Subscriptions 检索
要使用 CLI 认证,请将 use_cli_auth 值设置为 true 并在终端中运行 az login
参考资料:
- https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli
- https://docs.microsoft.com/en-us/cli/azure/ad/sp?view=azure-cli-latest#az_ad_sp_create_for_rbac
- https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli
阿里云 (Alibaba Cloud)
支持的阿里云服务:
示例配置:
阿里云可以使用以下配置块进行集成。
- 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 创建
参考资料:
- https://www.alibabacloud.com/help/faq-detail/142101.htm
- 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 控制面板生成。我们建议仅给予令牌读取访问权限。
参考资料:
- 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_key 和 scaleway_access_token 可以从 Scaleway 控制台的 Credentials Options 生成。
参考资料:
- 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)
参考资料:
- 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 资源的 只读 权限。
参考资料:
- 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 生成
参考资料:
- 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
参考资料:
- https://www.namecheap.com/support/api/intro/
Cloudflare
支持的 Cloudflare 服务:
示例配置:
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 密钥。
参考资料:
- 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
参考资料:
- 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>
参考资料:
- https://www.redhat.com/sysadmin/kubeconfig
- https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html
- https://learn.microsoft.com/en-us/azure/aks/control-kubeconfig-access#get-and-verify-the-configuration-information
- 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 外,所有字段都是可选的。
参考资料:
- 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 外,所有字段都是可选的。
参考资料:
- https://www.consul.io/api-docs
示例配置:
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