Input Selectors¶
Overview¶
Sometimes you might want to limit a certain policy to only be run on certain resources. This can be achieved with input selectors.
Use case¶
For instance, if you have a custom policy that you only want to be evaluated if a certain resource type is being scanned. In such a case you could utilize input selectors to limit its evaluation on only those resources.
Example
    # METADATA
    # title: "RDS Publicly Accessible"
    # description: "Ensures RDS instances are not launched into the public cloud."
    # custom:
    #   input:
    #     selector:
    #     - type: cloud
    #       subtypes:
    #         - provider: aws
    #           service: rds
    package builtin.aws.rds.aws0999
    deny[res] {
    instance := input.aws.rds.instances[_]
    instance.publicaccess.value
    res := result.new("Instance has Public Access enabled", instance.publicaccess)
Observe the following subtypes defined:
        #       subtypes:
        #         - provider: aws
        #           service: rds
They will ensure that the policy is only run when the input to such a policy contains an RDS instance. 
Enabling selectors and subtypes¶
Currently, the following are supported:
| Selector | Subtype fields required | Example | 
|---|---|---|
| Cloud (AWS, Azure, etc.) | provider,service | provider: aws,service: rds | 
| Kubernetes | type: kubernetes | |
| Dockerfile | type: dockerfile | 
Default behaviour¶
If no subtypes or selectors are specified, the policy will be evaluated regardless of input.