Security Rule Information Object
Table of Contents
- Security Rule Information Object
- Table of Contents
- Overview
- Core Methods
- Security Rule Info Parameters
- Exceptions
- Basic Configuration
- Usage Examples
- Managing Configuration Changes
- Error Handling
- Best Practices
- Related Modules
Overview
The security_rule_info Ansible module provides functionality to gather information about security
rule objects in Palo Alto Networks' Strata Cloud Manager (SCM). This module allows you to retrieve
detailed information about a specific security rule by name or list multiple security rules with
various filtering options. As an info module, it only retrieves information and does not modify any
configuration.
Core Methods
| Method | Description | Parameters | Return Type |
|---|---|---|---|
fetch() |
Gets a specific rule by name | name: str, container: str, rulebase: str |
SecurityRuleResponseModel |
list() |
Lists rules with filtering | folder: str, rulebase: str, **filters |
List[SecurityRuleResponseModel] |
Security Rule Info Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
str | No | The name of a specific security rule to retrieve |
gather_subset |
list | No | Determines which information to gather (default: ['config']) |
folder |
str | One container* | Filter security rules by folder container |
snippet |
str | One container* | Filter security rules by snippet container |
device |
str | One container* | Filter security rules by device container |
rulebase |
str | No | Which rulebase to query (pre or post) (default: "pre") |
exact_match |
bool | No | When True, only return objects defined exactly in the specified container |
exclude_folders |
list | No | List of folder names to exclude from results |
exclude_snippets |
list | No | List of snippet values to exclude from results |
exclude_devices |
list | No | List of device values to exclude from results |
action |
list | No | Filter by action ("allow", "deny", "drop", etc.) |
category |
list | No | Filter by URL categories |
service |
list | No | Filter by services |
application |
list | No | Filter by applications |
destination |
list | No | Filter by destinations |
to_ |
list | No | Filter by to zones |
source |
list | No | Filter by sources |
from_ |
list | No | Filter by from zones |
tag |
list | No | Filter by tags |
disabled |
bool | No | Filter by disabled status |
profile_setting |
dict | No | Filter by profile setting groups |
log_setting |
str | No | Filter by log setting |
*One container parameter is required when name is not specified.
Provider Dictionary
| Parameter | Type | Required | Description |
|---|---|---|---|
client_id |
str | Yes | Client ID for SCM authentication |
client_secret |
str | Yes | Client secret for SCM authentication |
tsg_id |
str | Yes | Tenant Service Group ID |
log_level |
str | No | Log level for the SDK (default: "INFO") |
Exceptions
| Exception | Description |
|---|---|
InvalidObjectError |
Invalid request data or format |
MissingQueryParameterError |
Missing required parameters |
ObjectNotPresentError |
Security rule not found |
AuthenticationError |
Authentication failed |
ServerError |
Internal server error |
Basic Configuration
The Security Rule Info module requires proper authentication credentials to access the Strata Cloud Manager API.
- name: Basic Security Rule Info Configuration
hosts: localhost
gather_facts: false
vars:
provider:
client_id: "your_client_id"
client_secret: "your_client_secret"
tsg_id: "your_tsg_id"
log_level: "INFO"
tasks:
- name: Get information about security rules
cdot65.scm.security_rule_info:
provider: "{{ provider }}"
folder: "Texas"
rulebase: "pre"
register: rules_result
- name: Display security rules
debug:
var: rules_result.security_rules
Usage Examples
Retrieving Security Rule Information
You can retrieve information about security rules with various filtering options.
Getting Information About a Specific Rule
This example retrieves details about a specific security rule by name.
- name: Get information about a specific security rule
cdot65.scm.security_rule_info:
provider: "{{ provider }}"
name: "Allow_Web_Traffic"
folder: "Texas"
rulebase: "pre"
register: rule_info
- name: Display rule information
debug:
var: rule_info.security_rule
- name: Check rule action
debug:
msg: "Rule action is {{ rule_info.security_rule.action }}"
when: rule_info.security_rule is defined
Listing All Security Rules
This example lists all security rules in a specific folder and rulebase.
- name: List all security rules in a folder
cdot65.scm.security_rule_info:
provider: "{{ provider }}"
folder: "Texas"
rulebase: "pre"
register: all_rules
- name: Display count of rules
debug:
msg: "Found {{ all_rules.security_rules | length }} security rules in pre-rulebase"
- name: List all rule names
debug:
msg: "{{ all_rules.security_rules | map(attribute='name') | list }}"
Filtering by Rule Properties
This example demonstrates filtering security rules by various properties like action, tags, and zones.
- name: List only allow action security rules
cdot65.scm.security_rule_info:
provider: "{{ provider }}"
folder: "Texas"
rulebase: "pre"
action: ["allow"]
register: allow_rules
- name: Count allow rules
debug:
msg: "Found {{ allow_rules.security_rules | length }} allow rules"
- name: List security rules with specific tags
cdot65.scm.security_rule_info:
provider: "{{ provider }}"
folder: "Texas"
rulebase: "pre"
tag: ["web", "internet"]
register: tagged_rules
- name: List security rules for specific zones
cdot65.scm.security_rule_info:
provider: "{{ provider }}"
folder: "Texas"
rulebase: "pre"
from_: ["Internet"]
to_: ["DMZ"]
register: zone_rules
Using Advanced Filtering Options
This example shows how to use advanced filtering options to refine query results.
- name: List security rules with exact match and exclusions
cdot65.scm.security_rule_info:
provider: "{{ provider }}"
folder: "Texas"
rulebase: "post"
exact_match: true
exclude_folders: ["All"]
exclude_snippets: ["default"]
register: filtered_rules
- name: List security rules with multiple filters
cdot65.scm.security_rule_info:
provider: "{{ provider }}"
folder: "Texas"
rulebase: "pre"
source: ["any"]
destination: ["Web-Servers"]
application: ["web-browsing", "ssl"]
register: web_server_rules
Managing Configuration Changes
As an info module, security_rule_info does not make any configuration changes. However, you can
use the information it retrieves to make decisions about other configuration operations.
- name: Use security rule information to create address groups
block:
- name: Get security rules referencing specific destinations
cdot65.scm.security_rule_info:
provider: "{{ provider }}"
folder: "Texas"
rulebase: "pre"
destination: ["Web-Servers"]
register: web_rules
- name: Create address group for additional web servers
cdot65.scm.address_group:
provider: "{{ provider }}"
name: "Additional-Web-Servers"
folder: "Texas"
static_addresses: ["Web-Server-3", "Web-Server-4"]
description: "Additional web servers for existing rules"
state: "present"
when: web_rules.security_rules | length > 0
- name: Update security rules to include new address group
cdot65.scm.security_rule:
provider: "{{ provider }}"
name: "{{ item.name }}"
folder: "Texas"
rulebase: "pre"
destination: "{{ item.destination + ['Additional-Web-Servers'] }}"
state: "present"
when: web_rules.security_rules | length > 0
loop: "{{ web_rules.security_rules }}"
- name: Commit changes if any rules were updated
cdot65.scm.commit:
provider: "{{ provider }}"
folders: ["Texas"]
description: "Updated security rules to include additional web servers"
when: web_rules.security_rules | length > 0
Error Handling
It's important to handle potential errors when retrieving security rule information.
- name: Get security rule information with error handling
block:
- name: Attempt to get security rule info
cdot65.scm.security_rule_info:
provider: "{{ provider }}"
name: "Allow_Web_Traffic"
folder: "Texas"
rulebase: "pre"
register: result
rescue:
- name: Handle errors
debug:
msg: "An error occurred: {{ ansible_failed_result.msg }}"
- name: Check if it's a 'not found' error
debug:
msg: "Security rule 'Allow_Web_Traffic' does not exist, creating it..."
when: "'not found' in ansible_failed_result.msg"
Best Practices
Efficient Filtering
- Use specific filters to minimize the result set
- Combine multiple filters for more precise results
- Consider performance implications when retrieving large datasets
- Use exact_match=true when you only want rules defined directly in the container
- Utilize exclusion filters to narrow down results in complex environments
Rulebase Management
- Specify the appropriate rulebase (pre or post) for your query
- Be consistent in your rulebase usage across related operations
- Document which rules belong to which rulebase
- Consider querying both rulebases when generating comprehensive reports
- Understand the processing order implications of pre vs post rulebase
Container Management
- Use folder, snippet, or device consistently across operations
- Verify container existence before querying
- Use exclusion filters to refine results when working with large containers
- Document container structure for better organization
- Implement appropriate access controls for each container
Data Processing
- Register results to variables for further processing
- Use Ansible's filtering capabilities (selectattr, map, etc.) on the returned lists
- Check if security_rules/security_rule is defined before accessing properties
- Process returned data to generate reports or populate templates
- Create meaningful variable names for better playbook readability
Integration with Other Modules
- Use the info module to check for existing rules before creating new ones
- Combine with the security_rule module for complete rule management
- Use the retrieved information to make decisions in your playbooks
- Check rule dependencies before making changes
- Generate reports on security policy coverage and gaps
Related Modules
- security_rule - Create, update, and delete security rules
- security_zone - Manage security zones referenced in rules
- address_info - Retrieve information about address objects
- service_info - Retrieve information about service objects
- application_info - Retrieve information about application objects