Closed rusherr02 closed 1 year ago
hey @rusherr02 thanks for reaching out.
As I understand you are trying to create a custom policy for CloudFormation, then you accidentally imported the wrong base class. Should be like this
from checkov.common.models.enums import CheckResult, CheckCategories
from checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck
class DemoCheck(BaseResourceCheck):
...
hey @rusherr02 thanks for reaching out.
As I understand you are trying to create a custom policy for CloudFormation, then you accidentally imported the wrong base class. Should be like this
from checkov.common.models.enums import CheckResult, CheckCategories from checkov.cloudformation.checks.resource.base_resource_check import BaseResourceCheck class DemoCheck(BaseResourceCheck): ...
hey @gruebel after changing this to import what command should I run to test my custom policies?
If you also added the __init__.py
file as mentioned in the docs into the same folder as the custom policy, then you can reference it with your next checkov
run.
ex.
checkov -d . --external-checks-dir [path to custom checks folder]
I ran and got below error
3-07-01 00:42:58,899 [MainThread ] [ERROR] Cannot load external check 'temp' from checkov/DemoPolicy/temp.py
Traceback (most recent call last):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/checks/base_check_registry.py", line 207, in load_external_checks
spec.loader.exec_module(module) # type: ignore[union-attr] # loader can't be None here
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/Users/manavmalhotra/PycharmProjects/checkov/checkov/DemoPolicy/temp.py", line 1, in <module>
from checkov.DemoPolicy import Demo
ModuleNotFoundError: No module named 'checkov.DemoPolicy'
2023-07-01 00:42:58,902 [MainThread ] [ERROR] Cannot load external check 'temp' from checkov/DemoPolicy/temp.py
Traceback (most recent call last):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/checks/base_check_registry.py", line 207, in load_external_checks
spec.loader.exec_module(module) # type: ignore[union-attr] # loader can't be None here
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/Users/manavmalhotra/PycharmProjects/checkov/checkov/DemoPolicy/temp.py", line 1, in <module>
from checkov.DemoPolicy import Demo
ModuleNotFoundError: No module named 'checkov.DemoPolicy'
2023-07-01 00:42:58,906 [MainThread ] [ERROR] Cannot load external check 'temp' from checkov/DemoPolicy/temp.py
Traceback (most recent call last):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/checks/base_check_registry.py", line 207, in load_external_checks
spec.loader.exec_module(module) # type: ignore[union-attr] # loader can't be None here
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/Users/manavmalhotra/PycharmProjects/checkov/checkov/DemoPolicy/temp.py", line 1, in <module>
from checkov.DemoPolicy import Demo
ModuleNotFoundError: No module named 'checkov.DemoPolicy'
2023-07-01 00:42:58,917 [MainThread ] [ERROR] Cannot load external check 'Demo' from checkov/DemoPolicy/Demo.py
Traceback (most recent call last):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/checks/base_check_registry.py", line 207, in load_external_checks
spec.loader.exec_module(module) # type: ignore[union-attr] # loader can't be None here
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/Users/manavmalhotra/PycharmProjects/checkov/checkov/DemoPolicy/Demo.py", line 5, in <module>
class DemoCheck(BaseResourceCheck):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/multi_signature.py", line 64, in __new__
raise NotImplementedError(f"The signature {multi_signature_key} for {name} is not supported.")
NotImplementedError: The signature (('self', 'conf', 'file'), None, None) for scan_resource_conf is not supported.
2023-07-01 00:42:58,923 [MainThread ] [ERROR] Cannot load external check 'Demo' from checkov/DemoPolicy/Demo.py
Traceback (most recent call last):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/checks/base_check_registry.py", line 207, in load_external_checks
spec.loader.exec_module(module) # type: ignore[union-attr] # loader can't be None here
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/Users/manavmalhotra/PycharmProjects/checkov/checkov/DemoPolicy/Demo.py", line 5, in <module>
class DemoCheck(BaseResourceCheck):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/multi_signature.py", line 64, in __new__
raise NotImplementedError(f"The signature {multi_signature_key} for {name} is not supported.")
NotImplementedError: The signature (('self', 'conf', 'file'), None, None) for scan_resource_conf is not supported.
2023-07-01 00:42:58,928 [MainThread ] [ERROR] Cannot load external check 'Demo' from checkov/DemoPolicy/Demo.py
Traceback (most recent call last):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/checks/base_check_registry.py", line 207, in load_external_checks
spec.loader.exec_module(module) # type: ignore[union-attr] # loader can't be None here
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/Users/manavmalhotra/PycharmProjects/checkov/checkov/DemoPolicy/Demo.py", line 5, in <module>
class DemoCheck(BaseResourceCheck):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/multi_signature.py", line 64, in __new__
raise NotImplementedError(f"The signature {multi_signature_key} for {name} is not supported.")
NotImplementedError: The signature (('self', 'conf', 'file'), None, None) for scan_resource_conf is not supported.
2023-07-01 00:42:58,928 [MainThread ] [ERROR] Cannot load external check 'temp' from checkov/DemoPolicy/temp.py
Traceback (most recent call last):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/checks/base_check_registry.py", line 207, in load_external_checks
spec.loader.exec_module(module) # type: ignore[union-attr] # loader can't be None here
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/Users/manavmalhotra/PycharmProjects/checkov/checkov/DemoPolicy/temp.py", line 1, in <module>
from checkov.DemoPolicy import Demo
ModuleNotFoundError: No module named 'checkov.DemoPolicy'
2023-07-01 00:42:58,953 [MainThread ] [ERROR] Cannot load external check 'Demo' from checkov/DemoPolicy/Demo.py
Traceback (most recent call last):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/checks/base_check_registry.py", line 207, in load_external_checks
spec.loader.exec_module(module) # type: ignore[union-attr] # loader can't be None here
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/Users/manavmalhotra/PycharmProjects/checkov/checkov/DemoPolicy/Demo.py", line 5, in <module>
class DemoCheck(BaseResourceCheck):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/multi_signature.py", line 64, in __new__
raise NotImplementedError(f"The signature {multi_signature_key} for {name} is not supported.")
NotImplementedError: The signature (('self', 'conf', 'file'), None, None) for scan_resource_conf is not supported.
2023-07-01 00:42:58,957 [MainThread ] [ERROR] Cannot load external check 'temp' from checkov/DemoPolicy/temp.py
Traceback (most recent call last):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/checks/base_check_registry.py", line 207, in load_external_checks
spec.loader.exec_module(module) # type: ignore[union-attr] # loader can't be None here
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/Users/manavmalhotra/PycharmProjects/checkov/checkov/DemoPolicy/temp.py", line 1, in <module>
from checkov.DemoPolicy import Demo
ModuleNotFoundError: No module named 'checkov.DemoPolicy'
2023-07-01 00:42:58,957 [MainThread ] [ERROR] Cannot load external check 'temp' from checkov/DemoPolicy/temp.py
Traceback (most recent call last):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/checks/base_check_registry.py", line 207, in load_external_checks
spec.loader.exec_module(module) # type: ignore[union-attr] # loader can't be None here
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/Users/manavmalhotra/PycharmProjects/checkov/checkov/DemoPolicy/temp.py", line 1, in <module>
from checkov.DemoPolicy import Demo
ModuleNotFoundError: No module named 'checkov.DemoPolicy'
2023-07-01 00:42:58,986 [MainThread ] [ERROR] Cannot load external check 'temp' from checkov/DemoPolicy/temp.py
Traceback (most recent call last):
File "/Users/manavmalhotra/.pyenv/versions/3.11.3/lib/python3.11/site-packages/checkov/common/checks/base_check_registry.py", line 207, in load_external_checks
spec.loader.exec_module(module) # type: ignore[union-attr] # loader can't be None here
can you please help what's wrong
it seems like you put other files in the same folder as the custom policy. Please share the exact checkov
CLI call you use and remove everything from the folder, where the custom policy is, except the __init__.py
file and the custom policy file.
I want to run my custom against cft.yaml file which is present in the folder.
as said, put only the custom check files into the folder. you can also create a subfolder in your DemoPolicy
folder.
hey @gruebel can we set up a call sometimes? let me know
I have created a custom policy in Python and I need to run it against a CFT.yaml which I am unable, please help how can I run it
Example Value Policy I have created:
yaml file
basically, it's a very big yaml file I just want to create a custom policy if the resource contains 'abc' it should throw an error. I need help with how to create and run against the same. thanks