Browse Source
Add service rule, resource rules, actions rules, build_info rules, events rules. Partially-Implements: bp policy-in-code Change-Id: I497f4d02b5ea8399265dedc548214e4eca6b6a35changes/75/510075/7
12 changed files with 263 additions and 29 deletions
@ -0,0 +1,37 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may |
||||
# not use this file except in compliance with the License. You may obtain |
||||
# a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
||||
# License for the specific language governing permissions and limitations |
||||
# under the License. |
||||
|
||||
from oslo_policy import policy |
||||
|
||||
from heat.policies import base |
||||
|
||||
POLICY_ROOT = 'actions:%s' |
||||
|
||||
actions_policies = [ |
||||
policy.DocumentedRuleDefault( |
||||
name=POLICY_ROOT % 'action', |
||||
check_str=base.RULE_DENY_STACK_USER, |
||||
description='Performs non-lifecycle operations on the stack ' |
||||
'(Snapshot, Resume, Cancel update, or check stack resources).', |
||||
operations=[ |
||||
{ |
||||
'path': '/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/' |
||||
'actions', |
||||
'method': 'POST' |
||||
} |
||||
] |
||||
) |
||||
] |
||||
|
||||
|
||||
def list_rules(): |
||||
return actions_policies |
@ -0,0 +1,35 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may |
||||
# not use this file except in compliance with the License. You may obtain |
||||
# a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
||||
# License for the specific language governing permissions and limitations |
||||
# under the License. |
||||
|
||||
from oslo_policy import policy |
||||
|
||||
from heat.policies import base |
||||
|
||||
POLICY_ROOT = 'build_info:%s' |
||||
|
||||
build_info_policies = [ |
||||
policy.DocumentedRuleDefault( |
||||
name=POLICY_ROOT % 'build_info', |
||||
check_str=base.RULE_DENY_STACK_USER, |
||||
description='Show build information.', |
||||
operations=[ |
||||
{ |
||||
'path': '/v1/{tenant_id}/build_info', |
||||
'method': 'GET' |
||||
} |
||||
] |
||||
) |
||||
] |
||||
|
||||
|
||||
def list_rules(): |
||||
return build_info_policies |
@ -0,0 +1,48 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may |
||||
# not use this file except in compliance with the License. You may obtain |
||||
# a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
||||
# License for the specific language governing permissions and limitations |
||||
# under the License. |
||||
|
||||
from oslo_policy import policy |
||||
|
||||
from heat.policies import base |
||||
|
||||
POLICY_ROOT = 'events:%s' |
||||
|
||||
events_policies = [ |
||||
policy.DocumentedRuleDefault( |
||||
name=POLICY_ROOT % 'index', |
||||
check_str=base.RULE_DENY_STACK_USER, |
||||
description='List events.', |
||||
operations=[ |
||||
{ |
||||
'path': '/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/' |
||||
'events', |
||||
'method': 'GET' |
||||
} |
||||
] |
||||
), |
||||
policy.DocumentedRuleDefault( |
||||
name=POLICY_ROOT % 'show', |
||||
check_str=base.RULE_DENY_STACK_USER, |
||||
description='Show event.', |
||||
operations=[ |
||||
{ |
||||
'path': '/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/' |
||||
'resources/{resource_name}/events/{event_id}', |
||||
'method': 'GET' |
||||
} |
||||
] |
||||
) |
||||
] |
||||
|
||||
|
||||
def list_rules(): |
||||
return events_policies |
@ -0,0 +1,84 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may |
||||
# not use this file except in compliance with the License. You may obtain |
||||
# a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
||||
# License for the specific language governing permissions and limitations |
||||
# under the License. |
||||
|
||||
from oslo_policy import policy |
||||
|
||||
from heat.policies import base |
||||
|
||||
POLICY_ROOT = 'resource:%s' |
||||
|
||||
resource_policies = [ |
||||
policy.DocumentedRuleDefault( |
||||
name=POLICY_ROOT % 'index', |
||||
check_str=base.RULE_DENY_STACK_USER, |
||||
description='List resources.', |
||||
operations=[ |
||||
{ |
||||
'path': '/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/' |
||||
'resources', |
||||
'method': 'GET' |
||||
} |
||||
] |
||||
), |
||||
policy.DocumentedRuleDefault( |
||||
name=POLICY_ROOT % 'metadata', |
||||
check_str=base.RULE_ALLOW_EVERYBODY, |
||||
description='Show resource metadata.', |
||||
operations=[ |
||||
{ |
||||
'path': '/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/' |
||||
'resources/{resource_name}/metadata', |
||||
'method': 'GET' |
||||
} |
||||
] |
||||
), |
||||
policy.DocumentedRuleDefault( |
||||
name=POLICY_ROOT % 'signal', |
||||
check_str=base.RULE_ALLOW_EVERYBODY, |
||||
description='Signal resource.', |
||||
operations=[ |
||||
{ |
||||
'path': '/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/' |
||||
'resources/{resource_name}/signal', |
||||
'method': 'POST' |
||||
} |
||||
] |
||||
), |
||||
policy.DocumentedRuleDefault( |
||||
name=POLICY_ROOT % 'mark_unhealthy', |
||||
check_str=base.RULE_DENY_STACK_USER, |
||||
description='Mark resource as unhealthy.', |
||||
operations=[ |
||||
{ |
||||
'path': '/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/' |
||||
'resources/{resource_name_or_physical_id}', |
||||
'method': 'PATCH' |
||||
} |
||||
] |
||||
), |
||||
policy.DocumentedRuleDefault( |
||||
name=POLICY_ROOT % 'show', |
||||
check_str=base.RULE_DENY_STACK_USER, |
||||
description='Show resource.', |
||||
operations=[ |
||||
{ |
||||
'path': '/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/' |
||||
'resources/{resource_name}', |
||||
'method': 'GET' |
||||
} |
||||
] |
||||
) |
||||
] |
||||
|
||||
|
||||
def list_rules(): |
||||
return resource_policies |
@ -0,0 +1,27 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may |
||||
# not use this file except in compliance with the License. You may obtain |
||||
# a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
||||
# License for the specific language governing permissions and limitations |
||||
# under the License. |
||||
|
||||
from oslo_policy import policy |
||||
|
||||
from heat.policies import base |
||||
|
||||
POLICY_ROOT = 'service:%s' |
||||
|
||||
service_policies = [ |
||||
policy.RuleDefault( |
||||
name=POLICY_ROOT % 'index', |
||||
check_str=base.RULE_CONTEXT_IS_ADMIN) |
||||
] |
||||
|
||||
|
||||
def list_rules(): |
||||
return service_policies |
Loading…
Reference in new issue