deny
効果は、ポリシー定義を通じて定義された標準に一致しないリソース要求を防ぐために使用され、要求が失敗します。
評価を拒否する
Resource Manager モードで一致するリソースを作成または更新する場合、拒否すると、リソース プロバイダーに送信される前に要求が禁止されます。 要求は 403 (Forbidden)
として返されます。 ポータルでは、Forbidden
はポリシー割り当てによって阻止されたデプロイの状態として表示されます。 リソース プロバイダー モードの場合、リソース プロバイダーはリソースの評価を管理します。
既存のリソースの評価中に、 deny
ポリシー定義に一致するリソースは非準拠としてマークされます。
Deny のプロパティ
Resource Manager モードの場合、 deny
効果には、ポリシー定義の then
条件で使用するプロパティはそれ以上ありません。
Microsoft.Kubernetes.Data
のリソース プロバイダー モードの場合、deny
効果には、details
の次のサブプロパティがあります。 新しいポリシー定義や更新されたポリシー定義では、templateInfo
を使用する必要があります。constraintTemplate
は非推奨となっています。
templateInfo
(必須)constraintTemplate
とは併用できません。sourceType
(必須)制約テンプレートのソースの種類を定義します。 指定できる値は
PublicURL
またはBase64Encoded
です。PublicURL
の場合、url
プロパティと組み合わせて制約テンプレートの場所を指定します。 この場所はパブリックにアクセスできる必要があります。Warnung
url
には、SAS URI やトークンなど、シークレットが公開されてしまう可能性がある情報は一切使用しないでください。Base64Encoded
の場合、content
プロパティと組み合わせて、base 64 でエンコードされた制約テンプレートを指定します。 既存の Open Policy Agent (OPA) Gatekeeper v3 制約テンプレートからカスタム定義を作成するには、「制約テンプレートからポリシー定義を作成する」を参照してください。
constraint
(省略可)templateInfo
とは併用できません。- 制約テンプレートの CRD 実装です。
values
で{{ .Values.<valuename> }}
のように渡されたパラメーターを使います。 次の例 2 では、これらの値は{{ .Values.excludedNamespaces }}
および{{ .Values.allowedContainerImagesRegex }}
です。
constraintTemplate
(非推奨)templateInfo
とは併用できません。- ポリシーの定義を作成または更新するときは、
templateInfo
に置き換えてください。 - 新しい制約を定義する、制約テンプレート CustomResourceDefinition (CRD) です。 このテンプレートは、Rego ロジック、制約スキーマと、Azure Policy から
values
で渡される制約パラメーターを定義します。 詳細については、「Gatekeeper 制約」に移動してください。
constraintInfo
(省略可)constraint
、constraintTemplate
、apiGroups
、またはkinds
とは使用できません。constraintInfo
が指定されていない場合、制約はtemplateInfo
とポリシーから生成できます。sourceType
(必須)制約用のソースの種類を定義します。 指定できる値は
PublicURL
またはBase64Encoded
です。PublicURL
の場合、url
プロパティと組み合わせて制約の場所を指定します。 この場所はパブリックにアクセスできる必要があります。Warnung
url
には、SAS URI やトークンなど、シークレットが公開されてしまう可能性がある情報は一切使用しないでください。
namespaces
(省略可)excludedNamespaces
(必須)labelSelector
(必須)- 指定されたラベルとセレクターに一致する Kubernetes リソースをポリシー評価に含めるため、オブジェクトには、
matchLabels
(オブジェクト) プロパティとmatchExpression
(配列) プロパティが含まれています。 - 空または欠損値を指定すると、ポリシーの評価には、
excludedNamespaces
で定義されている名前空間を除くすべてのラベルとセレクターが含まれます。
- 指定されたラベルとセレクターに一致する Kubernetes リソースをポリシー評価に含めるため、オブジェクトには、
apiGroups
( templateInfo を使用する場合は必須)kinds
( templateInfo を使用する場合は必須)- 評価対象とする Kubernetes オブジェクトの kind を含んだ配列。
["*"]
向けの の定義は許可されません。
values
(省略可)- 制約に渡すすべてのパラメーターと値を定義します。 各値は制約テンプレート CRD に存在する必要があります。
拒否の具体例
例 1: Resource Manager モードに deny
効果を使用する。
"then": {
"effect": "deny"
}
例 2: deny
のリソース プロバイダー モードに対するMicrosoft.Kubernetes.Data
効果の使用。 details.templateInfo
の追加情報では、PublicURL
の使用を宣言し、Kubernetes で使う制約テンプレートの場所に url
を設定して、許可されるコンテナー イメージを制限します。
"then": {
"effect": "deny",
"details": {
"templateInfo": {
"sourceType": "PublicURL",
"url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
},
"values": {
"imageRegex": "[parameters('allowedContainerImagesRegex')]"
},
"apiGroups": [
""
],
"kinds": [
"Pod"
]
}
}
次のステップ
- Azure Policy のサンプルを確認します。
- 「Azure Policy の定義の構造」を確認します。
- プログラムによってポリシーを作成する方法を理解します。
- コンプライアンス データを取得する方法を学習します。
- 準拠していないリソースを修復する方法を学習します。
- Azure 管理グループを確認する。