# @adaptiveworx/iac-policies 中文文档

规范地址：https://npmcn.com/package/%40adaptiveworx/iac-policies/

版本：0\.2\.3
npm 元数据更新时间：2026-10-03T23:08:15.719Z
中文译文更新时间：2026-11-06T20:59:31.979Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40adaptiveworx/iac-policies
原文对照：https://npmcn.com/package/%40adaptiveworx/iac-policies/?lang=original
项目主页：https://github.com/AdaptiveWorX/iac-core/tree/main/packages/iac-policies#readme
源码仓库：https://github.com/AdaptiveWorX/iac-core

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：58.4 kB，37 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=26\.0\.0
- 运行依赖：1 个
- peer 依赖：typescript ^6\.0\.0 \|\| ^7\.0\.0，@pulumi/policy ^1\.18\.0，@pulumi/pulumi ^3\.150\.0
- 首次发布：2026-04-29T14:30:25.580Z
- 最新版本发布：2026-10-03T23:08:15.368Z
- 近 30 天下载量：2348（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：7（近 12 个月 7 个）

## 中文简介

由Pulumi CrossGuard政策原始人组成,用于跨云基础设施治理:标记执行、区域合规、部署大门和AWS安全基线。 消费者将原始人编成自己的"政策包".

## 安装

```sh
npm install @adaptiveworx/iac-policies
```

也可以使用：`pnpm add @adaptiveworx/iac-policies`、`yarn add @adaptiveworx/iac-policies`、`bun add @adaptiveworx/iac-policies`

## README

# `@adaptiveworx/iac-policies`

可作曲的普鲁米克罗斯盖德政策原始人. **图书馆,不是完整的包** 消费者将原始人编成自己的 `PolicyPack` 与符合其兽形的配置相匹配.

三项跨云政策+一项AWS:

| 工厂 | 云头 | 它会做什么 |
| --- | --- | --- |
| [`requireTagsPolicy`](https://npmcn.com/package/%40adaptiveworx/iac-policies/src/policies/require-tags.ts) | 横云 | 拒绝缺少所需标记的资源( 或有不匹配的预期值) |
| [`regionalCompliancePolicy`](https://npmcn.com/package/%40adaptiveworx/iac-policies/src/policies/regional-compliance.ts) | 跨云(AWS- 默认; Azure/GCP 可配置) | 在允许的区域列表之外拒绝资源 |
| [`deploymentProtectionPolicy`](https://npmcn.com/package/%40adaptiveworx/iac-policies/src/policies/deployment-protection.ts) | 横云 | CI/CD中未运行的块生产部署 |
| [`awsSecurityBaselinePolicy`](https://npmcn.com/package/%40adaptiveworx/iac-policies/src/policies/aws-security-baseline.ts) | 自动取款机 | S3 公共- ACL 拒绝 + S3 加密配置存在 |

附加用于遵约说明的类别出口: [`FrameworkControls`](https://npmcn.com/package/%40adaptiveworx/iac-policies/src/types.ts), (中文(简体) ), [`ComplianceEvidence`](https://npmcn.com/package/%40adaptiveworx/iac-policies/src/types.ts),未来用途 [`emitEvidence`](https://npmcn.com/package/%40adaptiveworx/iac-policies/src/evidence.ts) ub.

## 安装

```bash
pnpm add @adaptiveworx/iac-policies @pulumi/policy @pulumi/pulumi
```

`@pulumi/policy` 财务报告和审定财务报表 `@pulumi/pulumi` 是同伴的依赖关系.

## 消费者如何组成一个包

每个消费者在回购中都保留自己的成套政策目录:

```
my-repo/
└── policies/
    ├── PulumiPolicy.yaml     # pack manifest
    ├── package.json          # depends on @adaptiveworx/iac-policies + @pulumi/policy + @pulumi/pulumi
    └── index.ts              # imports primitives + constructs PolicyPack
```

`PulumiPolicy.yaml`数字 :

```yaml
name: my-org-policies
runtime: nodejs
description: My org's policy pack composed from @adaptiveworx/iac-policies primitives
```

`index.ts` 实例如下.

### 示例: AWS 消费者

使用所有四个原始人。 从上下文拉出堆栈 `@adaptiveworx/iac-core` 标记值与 Pulumi 同步 堆放包对面.

```ts
import { PolicyPack } from "@pulumi/policy";
import { detectStackContext } from "@adaptiveworx/iac-core";
import {
  requireTagsPolicy, // requiredTags defaults to DEFAULT_REQUIRED_TAGS: Environment, Workload, ManagedBy
  regionalCompliancePolicy,
  awsSecurityBaselinePolicy,
  deploymentProtectionPolicy,
  AWS_NON_TAGGABLE_RESOURCES,
} from "@adaptiveworx/iac-policies";

const ctx = detectStackContext();

new PolicyPack("my-aws-policies", {
  policies: [
    requireTagsPolicy({
      requiredTags: ["Environment", "AccountPurpose", "StackPurpose"],
      expectedTagValues: () => ({
        Environment: ctx.targetEnvironment ?? ctx.environment,
        AccountPurpose: ctx.accountPurpose,
        StackPurpose: ctx.stackPurpose,
      }),
      skipResourceTypes: AWS_NON_TAGGABLE_RESOURCES,
      skipResourceTypePrefixes: ["pulumi:"],
    }),

    regionalCompliancePolicy({
      allowedRegions:
        ctx.environment === "prd" ? ["us-east-1", "us-west-2"] : ["us-east-1"],
    }),

    awsSecurityBaselinePolicy(),

    deploymentProtectionPolicy({
      productionEnvironments: ["prd", "sec"],
      environmentResolver: () => ctx.targetEnvironment ?? ctx.environment,
    }),
  ],
});
```

然后部署与包:

```bash
pulumi preview --policy-pack ./policies
pulumi up      --policy-pack ./policies
```

### 示例: Azure 消费者

独取相克相克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克 消费者加了他们自己的Azure特有产品 基线(储存、密钥金库等)作为同一处的额外政策 需要的时候打包.

```ts
import { PolicyPack } from "@pulumi/policy";
import {
  requireTagsPolicy, // requiredTags defaults to DEFAULT_REQUIRED_TAGS: Environment, Workload, ManagedBy
  regionalCompliancePolicy,
  deploymentProtectionPolicy,
} from "@adaptiveworx/iac-policies";

new PolicyPack("my-azure-policies", {
  policies: [
    requireTagsPolicy({
      requiredTags: ["Environment", "Owner"],
    }),

    regionalCompliancePolicy({
      allowedRegions: ["westus3", "eastus2"],
      resourceTypeMatcher: t => t.startsWith("azure-native:"),
      regionExtractor: args => args.props.location as string | undefined,
    }),

    deploymentProtectionPolicy({
      productionEnvironments: ["prod"],
      environmentResolver: () => process.env.PULUMI_STACK ?? "dev",
    }),

    // (No AWS baseline — write Azure-specific baseline policies as
    //  needed and add them to this pack.)
  ],
});
```

## 为什么没有内置包?

大多数政策关注是针对消费者的:

-   **需要的标记不同** —— 说 `Environment`, (中文(简体) ), `Owner`, (中文(简体) ), `CostCenter`, (中文(简体) ), `Compliance`,, , , , , , , ,
-   **允许的区域各不相同** ——按租户,数据居住情况,环境分类
-   **合规框架各不相同** - 保健问题高级管理局;支付费用问题高级管理局;ISO27001基线
-   **生产门不同** —— 说 `prd`, (中文(简体) ), `prod`, (中文(简体) ), `production`,有时也 `sec`编号 :`mgmt`
-   **云面变化** 只有AWS的消费者不希望Azure进行特定检查,反之亦然

装运一个预先制造的包要么过于笼统,无法使用,要么过于适应性WorX,无法共享。 一个原始人库是可相容的,可相容的,让每个消费者都符合自己的惯例.

## 遵约说明

使用 [`FrameworkControls`](https://npmcn.com/package/%40adaptiveworx/iac-policies/src/types.ts) (c) 记录某一项政策所要求的遵守情况:

```ts
import type { FrameworkControls } from "@adaptiveworx/iac-policies";

const tagControls: FrameworkControls = {
  "NIST-800-53": ["CM-2", "CM-8"],
  ISO27001: ["A.8.1.1"],
};
```

这些是注释类型——它们不驱动运行时的行为,但它们是合规报告和审计证据管道所连接的.

## 稳定

`0.x` 原始地表稳定下来 后向相容的 API 变化将是大起落;小版本会添加新的原始或非破解选项字段.

## 许可证

[Apache 2.0 (英语)](https://npmcn.com/package/%40adaptiveworx/iac-policies/LICENSE)。见 [通知](https://npmcn.com/package/%40adaptiveworx/iac-policies/NOTICE)。 。 。 .

## 仓库

[github.com/AdaptiveWorX/iac-core/树干/主/包/iac-policys (英语)](https://github.com/AdaptiveWorX/iac-core/tree/main/packages/iac-policies)问题: [iac-core/问题](https://github.com/AdaptiveWorX/iac-core/issues)。 。 。 .

## 常见问题

### @adaptiveworx/iac-policies 是什么？

由Pulumi CrossGuard政策原始人组成,用于跨云基础设施治理:标记执行、区域合规、部署大门和AWS安全基线。 消费者将原始人编成自己的"政策包"\.

### 如何安装 @adaptiveworx/iac-policies？

在项目目录运行 npm install @adaptiveworx/iac-policies，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@pulumi/policy（^1\.18\.0）、@pulumi/pulumi（^3\.150\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @adaptiveworx/iac-policies 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @adaptiveworx/iac-policies 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @adaptiveworx/iac-policies 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=26\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @adaptiveworx/iac-policies 可以商用吗？

@adaptiveworx/iac-policies 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @adaptiveworx/iac-policies 的下载量有多少？

根据 npm 官方下载统计，@adaptiveworx/iac-policies 在 2026/10/05 – 2026/11/03 这 30 天内被下载 2,348 次，日均约 78 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @adaptiveworx/iac-policies 还在维护吗？

最新版本 0\.2\.3 发布于 2026/10/04（1 个月前）；至今共发布 7 个版本，其中过去 12 个月发布了 7 个；首次发布于 2026/04/29。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

