Azure Policy 定義の deny 効果
deny
効果は、ポリシー定義を通じて定義された標準と一致せず要求が失敗するリソース要求を防ぐために使われます。
Deny の評価
リソース マネージャー モードで照合されたリソースを作成または更新する場合、Deny は、リソース プロバイダーに要求が送信されないようにします。 要求は 403 (Forbidden)
として返されます。 ポータルでは、Forbidden
はポリシー割り当てによって阻止されたデプロイの状態として表示されます。 リソース プロバイダー モードでは、リソース プロバイダーによってリソースの評価が管理されます。
既存のリソースの評価中に、deny
ポリシー定義に一致するリソースは非準拠としてマークされます。
Deny のプロパティ
リソース マネージャー モードの場合、deny
効果には、ポリシー定義の then
条件で使うための他のプロパティはありません。
リソース プロバイダー モードが Microsoft.Kubernetes.Data
の場合、deny
効果には次の details
のサブ プロパティがあります。 新しいポリシー定義や更新されたポリシー定義では、templateInfo
を使用する必要があります。constraintTemplate
は非推奨となっています。
templateInfo
(必須)constraintTemplate
とは使用できません。sourceType
(必須)制約テンプレートのソースの種類を定義します。 指定できる値は
PublicURL
またはBase64Encoded
です。PublicURL
の場合、url
プロパティと組み合わせて制約テンプレートの場所を指定します。 この場所はパブリックにアクセスできる必要があります。警告
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
プロパティと組み合わせて制約の場所を指定します。 この場所はパブリックにアクセスできる必要があります。警告
url
には、SAS URI やトークンなど、シークレットが公開されてしまう可能性がある情報は一切使用しないでください。
namespaces
(省略可)- ポリシーの評価対象とする Kubernetes 名前空間の配列。
- 値が空または指定しなかった場合、ポリシーの評価には、
excludedNamespaces
で定義されている名前空間を除くすべての名前空間が含まれます。
excludedNamespaces
(必須)- ポリシーの評価から除外する Kubernetes 名前空間の配列。
labelSelector
(必須)matchLabels
(オブジェクト) とmatchExpression
(配列) プロパティを含む "オブジェクト" で、指定されたラベルとセレクターに一致するポリシーの評価に含める Kubernetes リソースを指定できます。- 値が空または指定しなかった場合、ポリシーの評価には、
excludedNamespaces
で定義された名前空間を除くすべてのラベルとセレクターが含まれます。
apiGroups
(templateInfo を使う場合は必須)- マッチさせる API グループを含んだ配列。 空の配列 (
[""]
) は、コア API グループです。 - apiGroups 向けの
["*"]
の定義は許可されません。
- マッチさせる API グループを含んだ配列。 空の配列 (
kinds
(templateInfo を使う場合は必須)- 評価対象とする Kubernetes オブジェクトの kind を含んだ配列。
- kinds 向けの
["*"]
の定義は許可されません。
values
(省略可)- 制約に渡すすべてのパラメーターと値を定義します。 それぞれの値は、制約テンプレート CRD に含まれている必要があります。
Deny の例
例 1: リソース マネージャー モードで deny
効果を使います。
"then": {
"effect": "deny"
}
例 2: Microsoft.Kubernetes.Data
のリソース プロバイダー モードで deny
効果を使います。 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 管理グループに関するページを確認します。