Create rule
/orgs/{org_name}/governance/policies/{policy_id}/rules Adds a rule to the policy's rule set. All rules in a policy must share the same domain (network or filesystem); mixing domains is rejected.
Network actions: connect:tcp, connect:udp. Resources are
hostnames (for example, example.com), wildcard subdomains (*.example.com
for one level, **.example.com for any depth), hostnames with an optional
port (for example, example.com:443), or CIDRs in IPv4 or IPv6 notation
(for example, 10.0.0.0/8 or 2001:db8::/32).
Filesystem actions: read, write. Resources are paths (for example,
/data). Use * to match within a single path segment and ** to match
recursively across segments (for example, /data/**).
Changes may take up to five minutes to reach developer machines.
Connection and access
API connection and authentication guidance
https://hub.docker.com/v2
Use one of these alternatives. Requirements within an alternative apply together.
bearerAuth
Parameters
org_name
path
Required
Type:
string
All schema constraints and annotations
{
"type": "string"
}policy_id
path
Required
Type:
string
All schema constraints and annotations
{
"type": "string"
}Request and responses
Request
application/json
Schema:
CreateRuleRequest
filesystem
{
"actions": [
"read",
"write"
],
"decision": "allow",
"name": "allow data directory",
"resources": [
"/data"
]
}network
{
"actions": [
"connect:tcp",
"connect:udp"
],
"decision": "allow",
"name": "allow research mirrors",
"resources": [
"research.mitre.org",
"cve.mitre.org"
]
}Response
201
application/json
Schema:
Rule
filesystem
{
"actions": [
"read",
"write"
],
"decision": "allow",
"id": "rule_07fwtnr0kn2qetl1b9olfbyz8kob",
"name": "allow data directory",
"resources": [
"/data"
]
}network
{
"actions": [
"connect:tcp",
"connect:udp"
],
"decision": "allow",
"id": "rule_06evsm9qjm1pdsk0a8nkfaxy7jna",
"name": "allow research mirrors",
"resources": [
"research.mitre.org",
"cve.mitre.org"
]
}Response
400
application/json
Schema:
Error
default
{
"error": {
"code": "invalid_argument",
"message": "name is required"
}
}Response
401
application/json
Schema:
Error
default
{
"error": {
"code": "unauthenticated",
"message": "unauthenticated"
}
}Response
403
permission_denied), or a creation limit has been reached (limit_exceeded): the org already has the maximum number of policies, or the policy already has the maximum number of rules.application/json
Schema:
Error
limit_exceeded
{
"error": {
"code": "limit_exceeded",
"message": "organization has reached the maximum of 100 policies"
}
}permission_denied
{
"error": {
"code": "permission_denied",
"message": "permission denied"
}
}Response
404
application/json
Schema:
Error
default
{
"error": {
"code": "not_found",
"message": "policy not found"
}
}Response
409
application/json
Schema:
Error
default
{
"error": {
"code": "conflict",
"message": "policy name already in use"
}
}Response
500
application/json
Schema:
Error
default
{
"error": {
"code": "internal",
"message": "internal error"
}
}Referenced schemas
#/components/schemas/CreateRuleRequest
Complete operation contract
{
"description": "Adds a rule to the policy's rule set. All rules in a policy must share\nthe same domain (network or filesystem); mixing domains is rejected.\n\n**Network** actions: `connect:tcp`, `connect:udp`. Resources are\nhostnames (for example, `example.com`), wildcard subdomains (`*.example.com`\nfor one level, `**.example.com` for any depth), hostnames with an optional\nport (for example, `example.com:443`), or CIDRs in IPv4 or IPv6 notation\n(for example, `10.0.0.0/8` or `2001:db8::/32`).\n\n**Filesystem** actions: `read`, `write`. Resources are paths (for example,\n`/data`). Use `*` to match within a single path segment and `**` to match\nrecursively across segments (for example, `/data/**`).\n\nChanges may take up to five minutes to reach developer machines.\n",
"operationId": "createRule",
"requestBody": {
"content": {
"application/json": {
"examples": {
"filesystem": {
"summary": "Filesystem rule",
"value": {
"actions": [
"read",
"write"
],
"decision": "allow",
"name": "allow data directory",
"resources": [
"/data"
]
}
},
"network": {
"summary": "Network rule",
"value": {
"actions": [
"connect:tcp",
"connect:udp"
],
"decision": "allow",
"name": "allow research mirrors",
"resources": [
"research.mitre.org",
"cve.mitre.org"
]
}
}
},
"schema": {
"$ref": "#/components/schemas/CreateRuleRequest"
}
}
},
"description": "Rule definition including actions, resources, and decision.",
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"examples": {
"filesystem": {
"summary": "Filesystem rule",
"value": {
"actions": [
"read",
"write"
],
"decision": "allow",
"id": "rule_07fwtnr0kn2qetl1b9olfbyz8kob",
"name": "allow data directory",
"resources": [
"/data"
]
}
},
"network": {
"summary": "Network rule",
"value": {
"actions": [
"connect:tcp",
"connect:udp"
],
"decision": "allow",
"id": "rule_06evsm9qjm1pdsk0a8nkfaxy7jna",
"name": "allow research mirrors",
"resources": [
"research.mitre.org",
"cve.mitre.org"
]
}
}
},
"schema": {
"$ref": "#/components/schemas/Rule"
}
}
},
"description": "Rule created and added to the policy's rule set."
},
"400": {
"$ref": "#/components/responses/InvalidArgument"
},
"401": {
"$ref": "#/components/responses/Unauthenticated"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"500": {
"$ref": "#/components/responses/InternalError"
}
},
"summary": "Create rule",
"tags": [
"rules"
]
}