云服务器内容精选

  • 概念介绍 Resource:Resource是模板中最重要的元素,通过关键字 "resource" 进行声明。当前"resource"中只支持"huaweicloud_rms_policy_assignment"一种资源,在其中指定具体的合规规则(支持预定义合规规则与自定义合规规则)的名称等配置信息。 变量:输入变量可以理解为模板的参数,通过关键字 "variable" 进行声明。通过定义输入变量,我们可以无需变更模板的源代码就能灵活修改配置。当没有变量时,不需要声明关键字 "variable" 。 Provider: Provider代表服务提供商,通过关键字 "terraform" 进行声明,详细定义请参见Provider。自定义合规规则包的格式为: "terraform": { "required_providers": { "huaweicloud": { "source": "huawei.com/provider/huaweicloud", "version": "1.46.0" } } } 其中version必须选择1.46.0或者更高的版本,支持的版本见支持Provider版本列表。
  • 合规规则包示例文件: example-conformance-pack.tf.json { "resource": { "huaweicloud_rms_policy_assignment": { "AccessKeysRotated": { "name": "access-keys-rotated", "description": "An IAM users is noncompliant if the access keys have not been rotated for more than maxAccessKeyAge number of days.", "policy_definition_id": "2a2938894ae786dc306a647a", "period": "TwentyFour_Hours", "parameters": { "maxAccessKeyAge": "${jsonencode(var.maxAccessKeyAge)}" } }, "IamGroupHasUsersCheck": { "name": "iam-group-has-users-check", "description": "An IAM groups is noncompliant if it does not add any IAM user.", "policy_definition_id": "f7dd9c02266297f6e8c8445e", "policy_filter": { "resource_provider": "iam", "resource_type": "groups" }, "parameters": {} }, "IamPasswordPolicy": { "name": "iam-password-policy", "description": "An IAM users is noncompliant if password policy for IAM users matches the specified password strength.", "policy_definition_id": "2d8d3502539a623ba1907644", "policy_filter": { "resource_provider": "iam", "resource_type": "users" }, "parameters": { "pwdStrength": "${jsonencode(var.pwdStrength)}" } }, "IamRootAccessKeyCheck": { "name": "iam-root-access-key-check", "description": "An account is noncompliant if the the root iam user have active access key.", "policy_definition_id": "66cac2ddc17b6a25ad077253", "period": "TwentyFour_Hours", "parameters": {} }, "IamUserConsoleAndApiAccessAtCreation": { "name": "iam-user-console-and-api-access-at-creation", "description": "An IAM user with console access is noncompliant if access keys are setup during the initial user setup.", "policy_definition_id": "a5f29eb45cddce8e6baa033d", "policy_filter": { "resource_provider": "iam", "resource_type": "users" }, "parameters": {} }, "IamUserGroupMembershipCheck": { "name": "iam-user-group-membership-check", "description": "An IAM user is noncompliant if it does not belong to any IAM user group.", "policy_definition_id": "846f5708463c1490c4eebd60", "policy_filter": { "resource_provider": "iam", "resource_type": "users" }, "parameters": { "groupIds": "${jsonencode(var.groupIds)}" } }, "IamUserLastLoginCheck": { "name": "iam-user-last-login-check", "description": "An IAM user is noncompliant if it has never signed in within the allowed number of days.", "policy_definition_id": "6e4bf7ee7053b683f28d7f57", "period": "TwentyFour_Hours", "parameters": { "allowedInactivePeriod": "${jsonencode(var.allowedInactivePeriod)}" } }, "IamUserMfaEnabled": { "name": "iam-user-mfa-enabled", "description": "An IAM user is noncompliant if it does not have multi-factor authentication (MFA) enabled.", "policy_definition_id": "b92372b5eb51330306cec9c2", "policy_filter": { "resource_provider": "iam", "resource_type": "users" }, "parameters": {} }, "IamUserSingleAccessKey": { "name": "iam-user-single-access-key", "description": "An IAM user with console access is noncompliant if iam user have multiple active access keys.", "policy_definition_id": "6deae3856c41b240b3c0bf8d", "policy_filter": { "resource_provider": "iam", "resource_type": "users" }, "parameters": {} }, "MfaEnabledForIamConsoleAccess": { "name": "mfa-enabled-for-iam-console-access", "description": "An IAM user is noncompliant if it uses a console password and does not have multi-factor authentication (MFA) enabled.", "policy_definition_id": "63f8301e47b122062a68b868", "policy_filter": { "resource_provider": "iam", "resource_type": "users" }, "parameters": {} }, "RootAccountMfaEnabled": { "name": "root-account-mfa-enabled", "description": "An account is noncompliant if the the root iam user does not have multi-factor authentication (MFA) enabled.", "policy_definition_id": "61d787a75cf7f5965da5d647", "period": "TwentyFour_Hours", "parameters": {} } } }, "variable": { "maxAccessKeyAge": { "description": "The maximum number of days without rotation. ", "type": "string", "default": "90" }, "pwdStrength": { "description": "The requirements of password strength. The parameter value can only be 'Strong', 'Medium', or 'Low'.", "type": "string", "default": "Strong" }, "groupIds": { "description": "The list of allowed IAM group IDs. If the list is empty, all values are allowed.", "type": "list(string)", "default": [] }, "allowedInactivePeriod": { "description": "Maximum number of days without login.", "type": "number", "default": 90 } }, "terraform": { "required_providers": { "huaweicloud": { "source": "huawei.com/provider/huaweicloud", "version": "1.46.0" } } } }
  • 合规规则包示例文件: example-conformance-pack-with-custom-policy.tf.json { "resource": { "huaweicloud_rms_policy_assignment": { "CustomPolicyAssignment": { "name": "customPolicy${var.name_suffix}", "description": "合规包自定义合规规则,所有资源都是不合规的", "policy_filter": { "resource_provider": "obs", "resource_type": "buckets" }, "parameters": {}, "custom_policy": { "function_urn": "${var.function_urn}", "auth_type": "agency", "auth_value": { "agency_name": "\"config_custom_policy_agency\"" } } } } }, "variable": { "name_suffix": { "description": "", "type": "string" }, "function_urn": { "description": "", "type": "string" } }, "terraform": { "required_providers": { "huaweicloud": { "source": "huawei.com/provider/huaweicloud", "version": "1.46.0" } } } }
  • 基本概念 示例模板: 配置审计 服务提供给用户的合规规则包模板,合规规则包示例模板旨在帮助用户快速创建合规规则包,其中包含适合用户场景的合规规则和输入参数。 预定义合规规则包: 通过“示例模板”创建的合规规则包,用户只需要填入所需的规则参数即可完成合规规则包的部署流程。 自定义合规规则包: 用户根据自身需求编写合规规则包的模板文件,在模板文件中填入适合自身使用场景的预设规则或自定义规则,然后通过“上传模板”或“OBS存储桶”方式完成合规规则包的部署流程。自定义模板文件格式和文件内容格式均为JSON,不支持tf格式和zip格式的文件内容。 合规性数据: 一个合规规则包包含一个或多个合规规则,而每一条合规规则会评估一个或多个资源的合规结果,配置审计服务提供了如下的合规性数据,供您了解合规规则包的评估结果概览: 合规规则包的合规性评估:代表合规规则包中的所有合规规则是否评估到不合规的资源。若存在不合规资源,则合规评估结果为“不合规”;若不存在不合规资源,则合规评估结果为“合规”。 合规规则的合规性评估:代表合规规则包中的单个合规规则是否评估到不合规的资源。若存在不合规资源,则合规评估结果为“不合规”;若不存在不合规资源,则合规评估结果为“合规”。 合规规则包的合规分数:代表合规规则包中所有规则的合规资源数之和与所有规则的评估资源数之和的百分比。若该值为100,则代表合规规则包中所有的合规评估结果均为合规;若该值为0,则代表合规规则包中所有的合规评估结果均为不合规;若该值为“--”,则代表合规规则包未评估到任何资源。 图1 合规分数计算公式 资源栈: 合规规则包下发的合规规则的创建、更新和删除行为最终是通过 RFS 服务的资源栈来实现的。资源栈是 资源编排 服务的概念,详见资源栈。 状态: 表1 合规规则包的部署状态 取值 状态 状态说明 CREATE_SUC CES SFUL 已部署 合规规则包已部署成功,合规规则均创建成功。 CREATE_IN_PROGRESS 部署中 合规规则包正在部署中,合规规则正在创建中。 CREATE_FAILED 部署异常 合规规则包部署失败。 DELETE_IN_PROGRESS 删除中 合规规则包正在删除中,合规规则正在删除中。 DELETE_FAILED 删除异常 合规规则包删除失败。 ROLLBACK_SUCCESSFUL 回滚成功 合规规则包下发的合规规则创建失败,触发合规规则的回滚行为,已创建的合规规则删除成功。 ROLLBACK_IN_PROGRESS 回滚中 合规规则包下发的合规规则创建失败,触发合规规则的回滚行为,已创建的合规规则正在删除中。 ROLLBACK_FAILED 回滚失败 合规规则包下发的合规规则创建失败,触发合规规则的回滚行为,回滚行为失败,需在RFS服务查看失败原因。 UPDATE_SUCCESSFUL 更新成功 合规规则包修改并更新成功。 UPDATE_IN_PROGRESS 更新中 合规规则包修改更新中。 UPDATE_FAILED 更新失败 合规规则包修改更新失败。 合规规则包的授权: 通过资源编排服务(RFS)的资源栈创建和删除合规规则时,需要拥有合规规则的创建和删除的权限。因此,部署合规规则包时,需要提供一个具有相应权限的委托,供配置审计服务的合规规则包下发时使用。 当您不选择进行自定义授权时,Config将通过服务关联委托的方式自动获取RFS的相关权限。如您需要自行控制委托权限的范围,可选择进行自定义授权,提前在 统一身份认证 服务(IAM)中创建委托,并进行自定义授权,但必须包含可以让合规规则包正常工作的权限(授权资源编排服务创建、更新和删除合规规则的权限),创建委托详见创建委托(委托方操作)。
  • 操作场景 如果您是组织管理员或Config服务的委托管理员,您可以添加组织类型的合规规则包,直接作用于您组织内账号状态为“正常”的成员账号中。 当组织合规规则包部署成功后,会在组织内成员账号的合规规则包列表中显示此组织合规规则包。且该组织合规规则包的删除操作只能由创建组织规则包的组织账号进行,组织内的其他账号只能触发合规规则包部署规则的评估和查看规则评估结果以及详情。 组织合规规则包创建完成后,所部署的规则默认会执行一次评估,后续将根据规则的触发机制自动触发评估,也可以在资源合规规则列表中手动触发单个合规规则的评估。
  • 约束与限制 每个账号最多可以创建50个合规规则包(包括组织合规规则包),最多可以创建500个合规规则。 创建或修改组织合规规则包需要开启资源记录器,资源记录器处于关闭状态时,组织合规规则包仅支持查看和删除操作。具体请参见配置资源记录器。 非组织内账号无法在Config控制台的“合规规则包”页面中看到“组织合规规则包”页签。 组织合规规则包仅会下发至账号状态为“正常”的组织成员账号中,且组织成员账号需开启资源记录器,否则将导致部署异常。
  • 适用于自动驾驶场景的合规实践 该示例模板中对应的合规规则的说明如下表所示: 表1 合规包示例模板说明 合规规则 规则中文名称 涉及云服务 规则描述 css-cluster-disk-encryption-check CSS 集群开启磁盘加密 css CS S集群未开启磁盘加密,视为“不合规” css-cluster-https-required CSS集群启用HTTPS css CSS集群未启用https,视为“不合规” css-cluster-no-public-zone CSS集群不能公网访问 css CSS集群开启公网访问,视为“不合规” css-cluster-security-mode-enable CSS集群支持安全模式 css CSS集群不支持安全模式,视为“不合规” cts-kms-encrypted-check CTS 追踪器通过KMS进行加密 cts CTS追踪器未通过KMS进行加密,视为“不合规” cts-obs-bucket-track CTS追踪器追踪指定的OBS桶 cts 账号下的所有CTS追踪器未追踪指定的OBS桶,视为“不合规” cts-support-validate-check CTS追踪器打开事件文件校验 cts CTS追踪器未打开事件文件校验,视为“不合规” cts-tracker-exists 创建并启用CTS追踪器 cts 账号未创建CTS追踪器,视为“不合规” dcs-redis-no-public-ip DCS Redis实例不存在弹性公网IP dcs DCS Redis资源存在弹性公网IP,视为“不合规” dcs-redis-password-access DCS Redis实例需要密码访问 dcs DCS Redis资源不需要密码访问,视为“不合规” ecs-instance-no-public-ip ECS资源不能公网访问 ecs ECS资源具有弹性公网IP,视为“不合规” elb-loadbalancers-no-public-ip ELB资源不具有弹性公网IP elb ELB资源具有弹性公网IP,视为“不合规” elb-tls-https-listeners-only ELB监听器配置HTTPS监听协议 elb 负载均衡器的任一监听器未配置HTTPS监听协议,视为“不合规” iam-password-policy IAM用户密码策略符合要求 iam IAM用户密码强度不满足密码强度要求,视为“不合规” iam-user-last-login-check IAM用户在指定时间内有登录行为 iam IAM用户在指定时间范围内无登录行为,视为“不合规” iam-user-mfa-enabled IAM用户开启MFA iam IAM用户未开启MFA认证,视为“不合规” rds-instance-no-public-ip RDS实例不具有弹性公网IP rds RDS资源具有弹性公网IP,视为“不合规” root-account-mfa-enabled 根账号开启MFA认证 iam 根账号未开启MFA认证,视为“不合规” volumes-encrypted-check 已挂载的云硬盘开启加密 ecs,evs 已挂载的云硬盘未进行加密,视为“不合规” vpc-flow-logs-enabled VPC启用流日志 vpc 检查是否为VPC启用了流日志,如果该VPC未启用流日志,视为“不合规” vpc-sg-ports-check 安全组端口检查 vpc 当安全组入方向源地址设置为0.0.0.0/0,且开放了所有的TCP/UDP端口时,视为“不合规” 父主题: 合规规则包示例模板