<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Security-as-Code Concept for Fulfilling ISO/IEC 27001:2022 Requirements</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Oleksandr Vakhula</string-name>
          <email>Oleksandr.p.vakhula@lpnu.ua</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yevhenii Kurii</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ivan Opirskyy</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Vitalii Susukailo</string-name>
          <email>vitalii.susukailo@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Lviv Polytechnic National University, Information Security Department</institution>
          ,
          <addr-line>Lviv, 79000</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <fpage>59</fpage>
      <lpage>72</lpage>
      <abstract>
        <p>This article thoroughly examines and analyzes the latest iteration of the ISO/IEC 27001:2022 standard, outlining the most contemporary requirements for information security management systems. The primary focus of this study centers on the novel control A.8.9, which is dedicated to configuration management. The article delves into the necessity and significance of effectively implementing this control element to ensure a high level of infrastructure security and strategically reduce the risks of security breaches. Particular attention is given to the innovative security approach known as “Secure as Code.” This methodology involves integrating security measures during the early stages of software development to effectively counter potential threats and ensure system resilience from the initial development phase to the operational stage. Serving as a comprehensive analysis and review of current trends in information security, the article not only provides readers with a broad perspective on the standard but also offers specific recommendations for the successful implementation of control A.8.9 of the ISO/IEC 27001:2022 standard. Additionally, practical tips are shared for seamlessly integrating the Secure as Code strategy into development practices. To support the research, an extensive review of literature and articles providing information on the implementation of ISO 27001 and the security-as-code approach were conducted.</p>
      </abstract>
      <kwd-group>
        <kwd>1 Information security</kwd>
        <kwd>cybersecurity</kwd>
        <kwd>ISO/IEC 27001</kwd>
        <kwd>2022</kwd>
        <kwd>information security framework</kwd>
        <kwd>configuration management</kwd>
        <kwd>security-as-code</kwd>
        <kwd>infrastructure-as-code</kwd>
        <kwd>DevSecOps</kwd>
        <kwd>cloud environments</kwd>
        <kwd>cloud service provider</kwd>
        <kwd>software development cycle</kwd>
        <kwd>cloud security threats</kwd>
        <kwd>shift-left security approach</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Virtually all modern business processes are
defined and driven by information and data. In
our digital economy, almost nothing functions
without the exchange of information. Our core
services rely on critical infrastructures [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ],
and their functionality is highly dependent on
the exchange of information and data.
Information security is integral to the reality of
our work and life. Therefore, enterprises of any
size must protect daily information operations,
critical data, and intellectual property from
cyber threats [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        In this age of industrialized cyberattacks,
adapting to ever-changing information security
risks requires a timely and flexible approach to
building a resilient and secure enterprise.
Taking into account the constant evolution of
cyber threats and their rapid increase, the
relevance of updating information security
practices becomes obvious. The need to adapt
to the latest challenges of the digital
environment has become critical [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>
        And that’s where the new ISO/IEC
27001:2022 standard comes into play [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ],
focusing on a process-oriented approach to
information security management. For more
than two decades, the ISO 27001 standard has
remained the recognized framework for
building information security management
systems. Despite the potential obsolescence of
the practices outlined in it, according to the
latest report from the International
Standardization Organization, in the year 2022,
the number of standard setters increased by
21% compared to 2021 [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>
        In response to global challenges, an updated
and improved version of the ISO/IEC 27001
standard was released at the end of 2022. As
the most prominent standard in the world of
information security management, this
standard plays a critical role in helping
organizations protect their information assets.
[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] Given the vital importance of this task in
today’s digital environment, the update of the
standard reflects a continuous effort to
improve and adapt to growing demands and
threats. This is aimed at creating more reliable
and effective information protection
mechanisms and increasing trust in the digital
space [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>In this article, the authors investigate and
analyze the notable changes in the latest
iteration of the international standard ISO/IEC
27001:2022, as compared to the previous 2013
version. Specifically, the focus lies on
conducting an in-depth examination of control
A.8.9—Configuration Management.</p>
      <p>The article aims to develop practical
recommendations in alignment with the
ISO/IEC 27001:2022 standard for
implementing secure configurations of critical
infrastructure assets through the application
of the “Security as Code” approach.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Overview of the</title>
      <p>27001:2022 Standard</p>
      <sec id="sec-2-1">
        <title>2.1. Description of the New Controls</title>
        <p>
          ISO/IEC
Many changes in the new version of the
standard are editorial, for example, changing
“international standard” to “document”
throughout and rearranging phrases to allow
for better international translation [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ].
        </p>
        <p>However, the new security controls in
Annex A demand the utmost attention. There
are 11 of them in the updated version of the
ISO/IEC 27001:2022 standard, namely:
1. Threat intelligence
2. Information security for the use of cloud
services
3. ICT readiness for business continuity
4. Physical security monitoring
5. Configuration management
6. Information deletion
7. Data masking
8. Data leakage prevention
9. Monitoring activities
10. Web filtering
11. Secure coding.</p>
        <p>A more detailed description of the new
controls, as well as recommended activities for
transitioning to the new version of the
standard, are provided in Table 1.</p>
        <p>The introduction through
operation to exit strategy
regarding cloud initiatives
now needs to be considered
comprehensively.</p>
        <p>The requirements for the IT
landscape should be derived
from the overall business
processes and the ability to
recover operational
capabilities.</p>
        <p>The use of alarm and
monitoring systems to
prevent unauthorized
physical access has gained
more emphasis.</p>
        <p>Action items
• Update the Vulnerability</p>
        <p>Management Policy
• Update the Contacts with</p>
        <p>special interest groups
• Create the 3rd party</p>
        <p>evaluation register
• Update the Business</p>
        <p>Continuity Management</p>
        <p>Policy/Plan
• Update the Physical and</p>
        <p>Environmental Security</p>
        <p>Policy
• Ensure using of the alarm
and monitoring systems for
A.8.10</p>
        <p>Information
deletion
A.8.11</p>
        <p>Data masking
A.8.12
A.8.16</p>
        <p>Data leakage
prevention
Monitoring
activities
A.8.23</p>
        <p>Web filtering
A.8.28</p>
        <p>Secure coding</p>
        <p>Configurations, including
security configurations, of
hardware, software, services,
and networks shall be
established, documented,
implemented, monitored, and
reviewed.</p>
        <p>Information stored in
information systems, devices, or
in any other storage media shall
be deleted when no longer
required.</p>
        <p>Data masking shall be used by
the organization’s topic-specific
policy on access control and
other related topic-specific
policies, and business
requirements, considering
applicable legislation.</p>
        <p>Data leakage prevention
measures shall be applied to
systems, networks, and any
other devices that process,
store, or transmit sensitive
information.</p>
        <p>Networks, systems, and
applications shall be monitored
for anomalous behavior and
appropriate actions taken to
evaluate potential information
security incidents.</p>
        <p>Access to external websites
shall be managed to reduce
exposure to malicious content.</p>
        <p>Secure coding principles shall
be applied to software
development.</p>
        <p>Hardening and secure
configuration of IT systems.</p>
        <p>Compliance with external
requirements, such as data
protection deletion concepts
needs to be implemented.</p>
        <p>Use techniques that mask
data, such as anonymization
and pseudonymization, to
bolster your data protection.</p>
        <p>Taking steps to help prevent
sensitive data from being
leaked.</p>
        <p>Your organization should be
monitoring network security
and application behavior to
detect any network
anomalies.</p>
        <p>Helps prevent users from
viewing specific URLs
containing malicious code.</p>
        <p>Using tools, commenting,
tracking changes, and
avoiding insecure
programming methods are
ways to ensure secure coding.
protection against
unauthorized physical access
• Create the hardening
baselines/configuration
documentation for key
systems and services
(servers, network
equipment, workstations)
• Enforce the secure
configuration/hardening of
key information systems
and company assets
• Update the Information</p>
        <p>Classification Policy
• Create the Data Retention</p>
        <p>Policy
• Ensure the timely deletion</p>
        <p>of obsolete information
• Update the Information</p>
        <p>Classification Policy
• Consider using the DLP</p>
        <p>system
• Otherwise, implement
compensating controls or
review and accept the risk
• Update the Logging and</p>
        <p>Monitoring Policy
• Install and configure the</p>
        <p>SIEM system
• Update the Malware</p>
        <p>Protection Policy
• Enforce the web content</p>
        <p>filtering function
• Enforce the Secure SDLC
for company products
As can be seen from the table, the new controls
are, in fact, an addition and a certain extension
of the existing domains of the previous version
of the standard. Therefore, they can be
relatively easily integrated into the existing
processes of the organization, whose
information security management system is
built according to ISO/IEC 27001:2013.
2.2.</p>
      </sec>
      <sec id="sec-2-2">
        <title>Detailed Overview of the A.8.9—</title>
      </sec>
      <sec id="sec-2-3">
        <title>Configuration Management Control</title>
        <p>Configurations—whether acting as a single
configuration file, or a group of configurations
linked together—are the underlying
parameters that govern how hardware,
software, and even entire networks are
managed.</p>
        <p>As an example, a firewall’s configuration file
will hold the baseline attributes that the device
uses to manage traffic to and from an
organization’s network, including block lists,
port forwarding, virtual LANs, and VPN
information.</p>
        <p>
          Configuration management is an integral
part of an organization’s broader asset
management operation. Configurations are key
in ensuring that an infrastructure not only
operating as it should but also in securing
devices against unauthorized changes or
incorrect amendments on the part of
maintenance staff and/or vendors [
          <xref ref-type="bibr" rid="ref10 ref11 ref12 ref13">10–13</xref>
          ].
        </p>
        <p>
          Configuration management safeguards find
diverse interpretations across various
information security frameworks, ranging
from SOC2 and HIPAA to PCI DSS and CIS
Critical Security Controls [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ].
concerning the management of configurations
[
          <xref ref-type="bibr" rid="ref15">15</xref>
          ].
        </p>
        <p>Establish and maintain a secure configuration process
for enterprise assets (end-user devices, including
portable and mobile, non-computing/IoT devices, and
servers) and software (operating systems and
applications). Review and update documentation
annually, or when significant enterprise changes
occur that could impact this Safeguard.</p>
        <p>Establish and maintain a secure configuration process
for network devices. Review and update
documentation annually, or when significant
enterprise changes occur that could impact this
Safeguard.</p>
        <p>Configure automatic session locking on enterprise
assets after a defined period of inactivity. For
generalpurpose operating systems, the period must not
exceed 15 minutes. For mobile end-user devices, the
period must not exceed 2 minutes.</p>
        <p>Manage default accounts on enterprise assets and
software, such as root, administrator, and other
preconfigured vendor accounts. Example
implementations can include: disabling default
accounts or making them unusable.</p>
        <p>Uninstall or disable unnecessary services on
enterprise assets and software, such as an unused
filesharing service, web application module, or service
function.
Overall, organizations need to draft and
implement configuration management policies
for both new systems and hardware, and any
that are already in use. Internal controls should
include business critical elements such as
security configurations, all hardware that holds
a configuration file, and any relevant software
applications or systems.</p>
        <p>Control 8.9 asks organizations to consider
all relevant roles and responsibilities when
implementing a configuration policy, including
the delegated ownership of configurations on a
device-by-device, or
application-byapplication basis.</p>
        <p>
          Where possible, organizations should use
standardized templates to secure all hardware,
software, and systems. Templates should:
• Attempt to utilize publicly available,
vendor-specific, and/or open-source
guidance on how best to configure
hardware and software assets.
• Meet minimum security requirements
for the device, application, or system that
they apply to.
• Work in harmony with the organization’s
broader information security efforts,
including all relevant ISO controls.
• Keep in mind the organization’s unique
business requirements—especially
where security configurations are
concerned—including how feasible it is
to apply or manage a template at any
given time.
• Be reviewed at appropriate intervals to
cater for system and/or hardware
updates or any prevailing security
threats [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ].
        </p>
        <p>When addressing the crucial aspect of asset
protection and security, a widely
acknowledged approach to safeguard an
organization’s assets and adhere to industry
best practices is the adoption of configuration
standards provided by the Center for Internet
Security (CIS), commonly referred to as CIS
Benchmarks.</p>
        <p>CIS Benchmarks is a set of globally
recognized and consensus-driven best
practices to help security practitioners
implement and manage their cybersecurity
defenses. Developed with a global community
of security experts, the guidelines help
organizations proactively safeguard against
emerging risks. Companies implement the CIS
Benchmark guidelines to limit
configurationbased security vulnerabilities in their digital
assets.</p>
        <p>
          Tools such as the CIS Benchmarks are
important because they outline security best
practices, developed by security professionals
and subject matter experts, for deploying over
25 different vendor products. These best
practices are a good starting point for creating
a new product or service deployment plan or
for verifying that existing deployments are
secure [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Security as a Code—Overview and Advantages</title>
      <p>We suggest considering an effective and
reliable way to implement the above-described
control using the security-as-code approach,
based on the CIS Benchmark for cloud
environments. Let’s first understand the
essence of this approach. Primarily, it’s
important to understand that this is a general
name for an approach that can encompass the
implementation of various types of security
controls. Currently, we can distinguish the
following:
• Policy or compliance as code.
• Security testing as code.
• Detection and response as code.</p>
      <p>In our case, we will consider Policy or
compliance as code, but we will refer to the
approach generally as Security as Code.</p>
      <p>The “Security as Code” approach in cloud
environments means integrating security
measures directly into the software
development and deployment process. This
approach allows for the automation of many
aspects of security, making it more consistent
and effective. It is particularly important in
cloud environments, where it is necessary to
respond quickly and flexibly to changes and
new security challenges. “Security as Code”
aids in the early detection of potential
vulnerabilities and ensures adherence to
regulatory and security standards.</p>
      <p>“Security as Code” in cloud environments
also involves integrating security policies and
standards directly into Infrastructure as Code
(IaC) templates, which are used for automating
the deployment and management of cloud
resources. This ensures that all deployed
systems automatically comply with established
security standards. Such an approach allows
the use of code as a mechanism for ensuring
continuous compliance with security
requirements, reducing human error and
potential configuration mistakes.</p>
      <p>
        Using the “Security as Code” approach can
significantly simplify configuration
management processes, which are a new
control envisaged by the ISO/IEC 27001:2022
standard, especially in cloud environments.
This approach integrates security standards
and policies directly into the code, automating
the implementation and adherence to
configuration requirements. Using the CIS
Benchmark for cloud environments allows for
the standardization and optimization of
security settings, ensuring compliance with
standards. This includes automatic checking
and adjustment of configurations according to
updated recommendations and best practices,
enhancing efficiency and reducing risks in
cloud environments [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>In cloud environments, the use of the
“security-as-code” approach is particularly
important due to its high dynamics and
flexibility. Cloud environments are often
characterized by rapid changes, scaling, and
distribution of resources, creating challenges
for traditional configuration management.
Let’s take a closer look at these issues and their
essence:</p>
      <p>Rapid Scaling: Cloud environments often
expand and contract, requiring flexible
configuration management.</p>
      <p>Diversity of Resources: Various types of
resources may be used in the cloud,
complicating the standardization of security
settings.</p>
      <p>Automation: Due to the large number of
resources and services, effective configuration
management requires a high level of
automation. “Security as Code” allows for the
automation and standardization of security
processes, adapting to rapid changes in cloud
environments, which helps ensure compliance
with configuration management requirements
in the ISO/IEC 27001:2022 standard.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Detailed Explanation of the</title>
    </sec>
    <sec id="sec-5">
      <title>Approach</title>
      <p>IaC is an important and growing aspect of
modern IT infrastructure management. It is
increasingly used for automating the
configuration, setup, and management of
systems, especially in complex, large-scale
environments. The growth of IaC meets the
need for more efficient, scalable, and
errorreducing approaches in IT infrastructure,
indicating its growing importance in the
industry. This trend signifies a significant and
ongoing shift towards IaC practices in IT
operations and development.</p>
      <p>
        Most cloud service consumers agree that IaC
allows for the automation of rapid service
deployment in the cloud, eliminating any
manual configuration and, consequently,
errors. “Security as Code” further develops this
approach by programmatically defining
security policies, standards, and best practices
to be used by default in configuration scripts
already used for setting up cloud services and
systems. IT departments can move from
perpetually balancing business flexibility and
security to realizing that these elements can be
combined, ensuring an appropriate level of
both without sacrificing either [
        <xref ref-type="bibr" rid="ref18 ref19">18, 19</xref>
        ].
      </p>
      <p>Let’s review the simplified scheme of
implementation SaC (Fig. 2).
databases, this requirement is integrated into
the procedure as a rule that automatically
activates when the DevSecOps team attempts
to deploy code. If the code does not comply
with the policy, it is rejected. Other policy
examples may include requirements for using
container or virtual machine images only from
verified sources, the necessity of data backup,
resource duplication in different availability
zones, encryption of virtual machine disks, and
requirements for resource labeling and
nomenclature. Such policies can be sourced
from standards, regulations, best practices, and
recommendations from external organizations
like the Cloud Security Alliance (CSA), Center
for Internet Security (CIS), NIST, GDPR, HIPAA,
PCI DSS, SOC2, as well as internal directives.</p>
      <p>
        Most of these requirements can be expressed in
code, serving for prevention, detection, and
response to violations [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ].
      </p>
      <p>IaC serves as the foundation for modules
that perform static policy compliance analysis.</p>
      <p>
        IaC can be deployed using tools like
CloudFormation for AWS, Deployment
Manager for GCP, and Resource Manager for
Azure, with Terraform or Pulumi being ideal
for cross-platform applications. Static policy
compliance checks should be integrated into
the CI/CD process of infrastructure code,
adhering to GitOps principles to prevent
misconfigurations and correct discrepancies
early in the development process [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ].
Organizational policies contain a list of
required security controls, which are broken
down into rules that are transformed into code
understandable by the Centralized Policy
Compliance Verification Service. These rules
are later grouped into hierarchically organized
policies with a structure of inheritance. This
centralized service acts as a control barrier,
checking the infrastructure code for
compliance with established policies before
deploying resources. For example, if an
organization adopts a policy requiring the
encryption of personal or financial data in
The component of the Centralized Policy
Compliance Verification Service can be
implemented using Open Policy Agent (OPA) or
Regula, both open-source software. OPA,
accepted into the Cloud Native Computing
Foundation (CNCF) on March 29, 2018, and
advancing to the “Graduated” maturity level by
January 29, 2021, offers flexibility and numerous
advantages. It operates independently of any
specific service or platform, allowing consistent These vulnerabilities may lead to security
policy application across environments and incidents like breaches, unauthorized access by
technologies. OPA provides fine-grained control external hackers, and internal threats such as
over policy enforcement and integrates with ransomware or malware. These issues exploit
major cloud providers and Kubernetes, making it weaknesses in the cloud setup, allowing
a versatile choice for different infrastructures. malicious entities to infiltrate the network [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ].
With OPA, policies can be managed centrally and Cloud misconfiguration is a widespread issue
uniformly across platforms, reducing the risk of in the realm of cloud computing. Due to the
inconsistencies. As an open-source project, OPA complexity and rapidly evolving nature of cloud
benefits from a strong community and environments, organizations often find it
ecosystem, ensuring reliable support and challenging to maintain optimal security
continuous improvements. configurations. These misconfigurations can
      </p>
      <p>
        These features make OPA a powerful tool easily become prevalent, leading to significant
for organizations seeking to implement a vulnerabilities. As cloud adoption continues to
unified, flexible, and scalable Security as a code grow, so does the risk of these misconfigurations,
approach [
        <xref ref-type="bibr" rid="ref22 ref23">22, 23</xref>
        ]. making it a prevalent concern for cybersecurity
in modern IT environments. This underscores
the importance of regular audits and reviews of
cloud configurations to ensure security and
compliance.
      </p>
    </sec>
    <sec id="sec-6">
      <title>5. Implementing CIS Benchmark</title>
    </sec>
    <sec id="sec-7">
      <title>Requirements Through</title>
    </sec>
    <sec id="sec-8">
      <title>Security-as-Code for</title>
    </sec>
    <sec id="sec-9">
      <title>Compliance with Control A.8.9</title>
    </sec>
    <sec id="sec-10">
      <title>ISO 27001 (Configuration</title>
    </sec>
    <sec id="sec-11">
      <title>Management)</title>
      <p>Policies will be written based on the CIS
Amazon Web Services Foundations Benchmark
v2.0.0. All CIS standards focus on technical
configuration settings for maintaining or statement.Action ==
enhancing the security of the discussed administrativePrivileges[_]
technology, and they should be used in statement.Effect == "Allow"
conjunction with other essential cyber hygiene policyName ==
tasks. The document, CIS Amazon Web Services resource["values"]["name"]["new"]
Foundations Benchmark, is a set of security } }
configuration best practices for Amazon Web default allow = true
Services (AWS). It typically covers areas like The policy imports the input file
Identity and Access Management (IAM), input.tfplan, representing the Terraform plan.
logging and monitoring strategies, network It uses a deny rule to check each IAM policy
resource configurations for information and resource in the Terraform plan. If a policy
resource protection, security measures for contains any statements allowing full
services like EC2, S3, RDS, etc., and general administrative privileges (specified as “*:*”), it
security and compliance guidelines. generates a denial message. The function</p>
      <p>
        This standard is intended to be the best hasFullAdminPrivileges checks if the IAM
practice for AWS customers to enhance the policy document contains any statements
security of their AWS environments. It’s also allowing “*:*” (full administrative privileges).
often used as a compliance and security The default statement allow = true at the end of
standard for organizations using AWS for their the policy permits all other resources not
infrastructure. We will take several matched by the deny rule.
requirements and describe them in the Rego
language for further use in OPA [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ].
      </p>
      <p>Cloud misconfiguration involves various
oversights and mistakes that can make cloud
environments vulnerable to security risks.
package
terraform.aws_s3_bucket_policy_validation
import input.tfplan
deny[msg] {
resource = tfplan.resources[_]
resource["type"] ==
"aws_s3_bucket_policy"</p>
      <p>not
hasDenyHttpStatement(resource["values"][
"policy"]["new"])</p>
      <p>msg = sprintf("S3 Bucket policy '%v'
does not deny HTTP requests and should
be denied.",
[resource["values"]["bucket"]])
}
hasDenyHttpStatement(policyDoc) {
statements := policyDoc["Statement"]
some i, statement := statements {
statement.Effect == "Deny"
statement.Action ==
"s3:GetObject"
containsHttpCondition(statement.Conditio
n)
} }
containsHttpCondition(condition) {
keys := keys(condition)
"IpAddress" in keys
condition["IpAddress"] ==
{"aws:SourceIp": "HTTP request IP
address"}
}
default allow = true</p>
      <p>package
terraform.aws_iam_admin_policies
import input.tfplan
deny[msg] {
resource = tfplan.resources[_]
resource["type"] ==
"aws_iam_policy" # Adjust the resource
type as per your Terraform
configuration.
hasFullAdminPrivileges(resource["values
"]["name"]["new"])</p>
      <p>msg = sprintf("IAM policy '%v'
allows full administrative privileges
and should not be attached.",
[resource["values"]["name"]["new"]])
}
hasFullAdminPrivileges(policyName) {</p>
      <p># Define a list of administrative
privileges you want to deny.</p>
      <p>administrativePrivileges := ["*:*"]
resource_policy :=
data.aws_iam_policy_document[resource["
v
alues"]["policy"]["new"]]</p>
      <p>statements :=
resource_policy["Statement"]</p>
      <p>some i, statement := statements {62</p>
      <p>It checks each S3 Bucket Policy resource in
the Terraform plan. If the policy does not
contain a Deny statement that denies HTTP
requests, it generates a denial message.</p>
      <p>The function hasDenyHttpStatement checks
if the policy document contains a Deny
statement that specifically denies HTTP
requests for s3:GetObject actions.</p>
      <p>The containsHttpCondition function checks
if the Deny statement contains a condition that
involves an HTTP request IP address.</p>
      <p>The default allow = true statement at the
end of the policy permits all other resources
not matched by the deny rule.
package
terraform.aws_ebs_volume_encryption
import input.tfplan
deny[msg] {
resource = tfplan.resources[_]
resource["type"] == "aws_ebs_volume"
# Adjust the resource type as per your
Terraform configuration.</p>
      <p>not isEBSEncrypted(resource)
msg = sprintf("EBS volume encryption
is not enabled in all regions in the
Terraform configuration.")
}
isEBSEncrypted(resource) {</p>
      <p>encryption_enabled :=
resource["values"]["encrypted"]["new"]</p>
      <p>encryption_enabled == true
}
default allow = true
The policy imports input data from ‘input.tfplan’,
which represents the Terraform plan.</p>
      <p>It uses a deny rule to check each AWS EBS
volume resource in the Terraform plan. If the
‘encrypted’ attribute is not set to ‘true’
(meaning EBS volume encryption is not
enabled), it generates a denial message.</p>
      <p>The default ‘allow = true’ statement at the
end of the policy permits all other resources
that do not match the deny rule.
import input.tfplan
deny[msg] {
resource = tfplan.resources[_]
resource["type"] ==
"aws_db_instance"
not isEncryptionEnabled(resource)
msg = sprintf("RDS instance %s is
not configured with encryption at
rest.", [resource["name"]])
}
isEncryptionEnabled(resource) {</p>
      <p># Modify this rule to match the
naming convention of your encryption
attribute.</p>
      <p>attribute_exists :=
resource["values"]["storage_encrypted"]</p>
      <p>attribute_value :=
resource["values"]["storage_encrypted"][
"new"]</p>
      <p>attribute_value == true
}
default allow = false</p>
      <p>The policy imports input data from
‘input.tfplan’, which represents the Terraform
plan.</p>
      <p>It applies a denial rule to check each AWS
RDS instance resource in the Terraform plan. If
the ‘storage_encrypted’ attribute is not set to
‘true’ (meaning encryption at rest is not active),
it generates a denial message.
package terraform.aws_cloudtrail
import input.tfplan
deny[msg] {
resource = tfplan.resources[_]
resource["type"] == "aws_cloudtrail"
not isCloudTrailEnabled(resource)
msg = sprintf("AWS CloudTrail is not
enabled in all regions in the Terraform
configuration.")
}
isCloudTrailEnabled(resource) {</p>
      <p># Modify this rule to match the
naming convention of your CloudTrail
attributes.</p>
      <p>attribute_exists :=
resource["values"]["is_multi_region_trai
l"]</p>
      <p>attribute_value :=
resource["values"]["is_multi_region_trai
l"]["new"]</p>
      <p>attribute_value == true
default allow = true</p>
      <p>The policy imports the ‘input.tfplan’ data,
representing the Terraform plan. It uses a deny
rule for evaluating each AWS CloudTrail
resource in the Terraform plan. If the
‘is_multi_region_trail’ attribute is not set to
‘true’ (indicating that CloudTrail is not
configured to operate in all regions), a denial
message is generated. The standard statement
‘allow = true’ at the end of the policy permits all
other resources not covered by the deny rule.
package
terraform.aws_security_group_validation
import input.tfplan
deny[msg] {
resource = tfplan.resources[_]
resource["type"] ==
"aws_security_group_rule"
isRemoteAdminPort(resource["values"]["fr
om_port"])
isEverywhereAllowed(resource["values"]["
cidr_blocks"])</p>
      <p>msg = sprintf("Security group rule
allows ingress from 0.0.0.0/0 to remote
server administration ports: %v",
[resource["values"]["from_port"]])
}
isRemoteAdminPort(port) {
port == 22 // Add more remote server
administration ports as needed (e.g., 3389
for RDP)
}
isEverywhereAllowed(blocks) {</p>
      <p>"0.0.0.0/0" in blocks
}
default allow = true</p>
      <p>This policy uses the ‘input.tfplan’ input,
representing the Terraform plan. It checks each
AWS Security Group Rule in the Terraform
plan. If the rule allows ingress from 0.0.0.0/0
(anywhere) to remote server administration
ports (e.g., SSH on port 22), it generates a denial
message. The ‘isRemoteAdminPort’ function
checks if the rule’s ‘from_port’ matches a
remote server administration port (like 22 for
SSH). The ‘isEverywhereAllowed’ function
verifies if 0.0.0.0/0 is present in the rule’s
‘cidr_blocks’, indicating it allows ingress from
anywhere. The default ‘allow = true’ statement
at the end of the policy permits all other
resources not covered by the deny rule.
package terraform.aws_config_monitoring
import input.tfplan
deny[msg] {</p>
      <p>resource = tfplan.resources[_]
resource["provider"] ==
"provider[\"aws\"]"
resource["type"] ==
"aws_config_configuration_recorder"</p>
      <p>not hasConfigMonitoring(resource)
msg = sprintf("AWS Config configuration
changes must be monitored.")
}
hasConfigMonitoring(recorder) {
recorder["values"]["recording_group"][0]
["all_supported"] == true
}
default allow = true</p>
      <p>It checks each Configuration Recorder
resource in the Terraform plan. If the recorder is
not monitoring all supported resource types
(all_supported set to true), it generates a denial
message.</p>
      <p>The function hasConfigMonitoring checks if
the Configuration Recorder has all_supported
set to true, indicating that it’s monitoring all
supported resource types.</p>
      <p>The default allow = true statement at the
end of the policy permits all other resources
not matched by the deny rule.</p>
      <p>
        However, Rego is a language that operates
quite differently than most and can be quite
unintuitive at first glance. It’s more similar to
SQL than to common imperative languages like
Python, which means that the learning curve
can be quite steep [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ].
      </p>
    </sec>
    <sec id="sec-12">
      <title>6. Practical Implementation</title>
    </sec>
    <sec id="sec-13">
      <title>Directly into the Development</title>
    </sec>
    <sec id="sec-14">
      <title>Cycle, Specifically into the</title>
    </sec>
    <sec id="sec-15">
      <title>Continuous Integration and</title>
    </sec>
    <sec id="sec-16">
      <title>Continuous Deployment (CI/CD) System</title>
      <p>Policies are created, but the full potential of
Terraform and OPA is realized when integrated
into a CI/CD pipeline. In our example, we use
GitHub Actions to trigger these checks on every
pull request. GitHub Actions is a feature on the
GitHub platform that allows automating software
development workflows directly in a GitHub
repository. This implementation ensures that any
proposed infrastructure changes are checked
against the policies we created earlier before they
are merged and deployed in the production
environment.</p>
      <p>Below we provide an example of YAML code
that will create a compliance check process, in
our case, regarding the secure configuration of
the AWS environment according to the CIS
Benchmark.</p>
      <p>Let’s examine each step of the GitHub Actions
workflow:</p>
      <p>Validate Terraform
on:
exit 1
fi
- name: Add policy results to job
summary
if: failure()
run: |
if [[ -s tags_policy_result.txt ]]; then
echo "Tags policy violations:" &gt;&gt;
$GITHUB_STEP_SUMMARY</p>
      <p>cat tags_policy_result.txt &gt;&gt;
$GITHUB_STEP_SUMMARY</p>
      <p>
        fi
[
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]
1. Trigger Workflow on Pull Requests to
‘main’ Branch: The workflow initiates when a
pull request is made to the ‘main’ branch.
      </p>
      <p>2. Job Execution on Ubuntu Latest Runner:
The job named ‘terraform’ runs on the latest
Ubuntu virtual environment provided by
GitHub Actions.</p>
      <p>3. Checkout Repository: The repository’s
code is checked out for use in the workflow.</p>
      <p>4. Set up Terraform: Installs and configures
the specified version of Terraform.</p>
      <p>5. Configure AWS Credentials: Sets up AWS
credentials using secrets stored in the GitHub
repository for secure access to AWS services.</p>
      <p>6. Terraform Init: Initializes Terraform,
setting up the working directory for Terraform
operations.</p>
      <p>7. Terraform Validate: Validates the
Terraform files for syntax correctness.</p>
      <p>8. Generate Terraform Plan: Creates a
Terraform execution plan and outputs it in
binary format, then converts it to JSON.</p>
      <p>10. Evaluate Rego Policies: Evaluates
custom policies written in Rego against the
Terraform plan and outputs results to text files.</p>
      <p>11. Add Policy Results to Job Summary: If
there are policy violations, they are added to
the job summary, which is visible in the GitHub
Actions UI.</p>
      <p>Each step ensures that code merged into the
‘main’ branch complies with defined policies
and is safe to deploy (Fig.3).
The integration of Terraform and Open Policy
Agent (OPA) into the Continuous
Integration/Continuous Deployment (CI/CD)
pipeline via GitHub Actions represents a
significant advancement in IaC practices. This
approach not only automates the process of
infrastructure deployment but also enforces a
high standard of compliance and security. By
conducting rigorous policy evaluations on
every pull request, the system ensures that
only code that adheres to the established
security and operational standards is merged
into the ‘main’ branch. This methodology
effectively minimizes human error and
streamlines the deployment process, ensuring
that all infrastructure changes are consistent,
secure, and aligned with the Center for Internet
Security (CIS) benchmarks for AWS
environments. The detailed breakdown of each
step in the GitHub Actions workflow highlights
the thoroughness of the process, offering a
clear and efficient pathway for maintaining the
integrity of the infrastructure. This practice not
only enhances security but also contributes to
a more robust and reliable development cycle,
ensuring that the infrastructure evolves in
lockstep with the application it supports.</p>
    </sec>
    <sec id="sec-17">
      <title>7. Summary</title>
      <p>The integration of the Security as Code (SaC)
concept into organizational practices is a
pivotal move towards complying with the
ISO/IEC 27001:2022 standards, with a special
emphasis on Control A.8.9—Configuration
Management. This article has delved into how
SaC not only streamlines security processes but
also directly supports the stringent
requirements of ISO/IEC 27001:2022,
particularly in the realm of managing and
safeguarding information assets through
effective configuration management. Utilizing</p>
      <p>SaC, especially in the context of Control A.8.9,
automates and standardizes the configuration
management processes. This harmonizes with
ISO/IEC 27001:2022’s mandate for
maintaining an inventory of assets and
ensuring the integrity of operational systems.
Automated tools in SaC can track
configurations and changes, ensuring that all
assets are consistently configured in
compliance with the defined security policies.
SaC methodologies facilitate continuous
monitoring of configuration states, ensuring
that any deviations from the standard
configurations are immediately identified and
rectified. This continuous oversight is crucial
for meeting ISO/IEC 27001:2022’s
requirements for Control A.8.9, which
emphasizes the importance of maintaining
secure configurations and promptly addressing
any anomalies. By translating configuration
policies into code, organizations can enforce
consistent settings across their IT
environment. This practice aligns with Control
A.8.9’s focus on ensuring the security of
operational systems through proper
configuration management, thereby enhancing
the overall security posture as mandated by
ISO/IEC 27001:2022. SaC offers
comprehensive logging capabilities which are
essential for documenting changes in system
configurations. This level of documentation
and traceability is not only a key aspect of
Control A.8.9 but also a fundamental
requirement of ISO/IEC 27001:2022, aiding in
audits and compliance verification processes.</p>
      <p>SaC methodologies enable organizations to
assess risks associated with configuration
changes proactively. This is in line with the
objectives of Control A.8.9, which aims to
manage risks stemming from changes in
operational environments, ensuring that
security measures are always up-to-date and
effective.</p>
      <p>In conclusion, the adoption of Security as
Code is not just a compliance measure but a
strategic approach that aligns closely with
ISO/IEC 27001:2022, particularly in the
context of Control A.8.9—Configuration
Management. It provides a robust framework
for managing configurations securely,
automating compliance processes, and
ensuring continuous monitoring and
adaptation. As organizations navigate the
complexities of information security, adopting
a security-as-code approach becomes
imperative to meet evolving standards and
maintain a robust, compliant security posture.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>P.</given-names>
            <surname>Anakhov</surname>
          </string-name>
          , et al.,
          <article-title>Protecting Objects of Critical Information Infrastructure from Wartime Cyber Attacks by Decentralizing the Telecommunications Network</article-title>
          ,
          <source>in: Workshop on Cybersecurity Providing in Information and Telecommunication Systems</source>
          , vol.
          <volume>3550</volume>
          (
          <year>2023</year>
          )
          <fpage>240</fpage>
          -
          <lpage>245</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>H.</given-names>
            <surname>Hulak</surname>
          </string-name>
          , et al.,
          <article-title>Dynamic Model of Guarantee Capacity and Cyber Security Management in the Critical Automated System</article-title>
          ,
          <source>in: 2nd International Conference on Conflict Management in Global Information Networks</source>
          , vol.
          <volume>3530</volume>
          (
          <year>2023</year>
          )
          <fpage>102</fpage>
          -
          <lpage>111</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>V.</given-names>
            <surname>Susukailo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Opirsky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Yaremko</surname>
          </string-name>
          ,
          <article-title>Methodology of ISMS Establishment Against Modern Cybersecurity Threats, Future Intent-Based Networking</article-title>
          , LNEE
          <volume>831</volume>
          (
          <year>2022</year>
          )
          <fpage>257</fpage>
          -
          <lpage>271</lpage>
          . doi:
          <volume>10</volume>
          .1007/978- 3-
          <fpage>030</fpage>
          -92435-5_
          <fpage>15</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kurii</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Opirskyy</surname>
          </string-name>
          ,
          <article-title>Analysis and Comparison of the NIST SP 800-53</article-title>
          and ISO/IEC 27001:
          <year>2013</year>
          , in: :
          <source>Cybersecurity Providing in Information and Telecommunication Systems</source>
          Vol.
          <volume>3288</volume>
          (
          <year>2021</year>
          )
          <fpage>21</fpage>
          -
          <lpage>32</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5] ISO/IEC 27002:
          <string-name>
            <surname>Information</surname>
            <given-names>Security</given-names>
          </string-name>
          , Cybersecurity and
          <string-name>
            <surname>Privacy ProtectionInformation Security Controls</surname>
          </string-name>
          (
          <year>2022</year>
          ). URL: https://www.iso.org/standard/ 75652.html
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Global</given-names>
            <surname>Cybersecurity Outlook</surname>
          </string-name>
          (
          <year>2022</year>
          ). URL: https://www.weforum.org/reports /global-cybersecurity-outlook
          <article-title>-2022</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Which</surname>
            <given-names>ISO</given-names>
          </string-name>
          <article-title>Standards are the Most Popular-Analysis of ISO 2019 Survey</article-title>
          . URL: https://advisera.com/articles/ which-iso
          <article-title>-standards-are-the-mostpopular-analysis-of-iso-2019-survey/</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kurii</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Opirskyy</surname>
          </string-name>
          , L. Bortnik, ISO/IEC 27001:
          <fpage>2022</fpage>
          -
          <article-title>Analysis Of Changes And Compliance Features Of The New Version Of The Standard</article-title>
          ,
          <source>IXth International Scientific and Technical Conference Information Protection and Information Systems Security</source>
          (
          <year>2023</year>
          )
          <fpage>15</fpage>
          -
          <lpage>17</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <article-title>[9] What Are The ISO 27001 Changes In 2022</article-title>
          . URL: https://bestpractice.biz
          <article-title>/ what-are-the-</article-title>
          <string-name>
            <surname>iso-</surname>
          </string-name>
          27001
          <string-name>
            <surname>-</surname>
          </string-name>
          changes-in2022/
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <source>[10] ISO 27002:2022, Control</source>
          <volume>8</volume>
          .
          <fpage>9</fpage>
          -
          <string-name>
            <given-names>Configuration</given-names>
            <surname>Management</surname>
          </string-name>
          . URL: https://www.isms.online/iso-27002/ control-8-9-configurationmanagement/
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>M. TajDini</surname>
            , V. Sokolov,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Skladannyi</surname>
          </string-name>
          ,
          <article-title>Performing Sniffing and Spoofing Attack Against ADS-B and Mode S using Software Define Radio</article-title>
          ,
          <source>in: IEEE International Conference on Information and Telecommunication Technologies and Radio Electronics</source>
          (
          <year>2021</year>
          )
          <fpage>7</fpage>
          -
          <lpage>11</lpage>
          . doi:
          <volume>10</volume>
          .1109/UkrMiCo52950.
          <year>2021</year>
          .
          <volume>9716665</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>M. TajDini</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          <string-name>
            <surname>Sokolov</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          <string-name>
            <surname>Buriachok</surname>
          </string-name>
          ,
          <article-title>Men-in-the-Middle Attack Simulation on Low Energy Wireless Devices using Software Define Radio</article-title>
          ,
          <source>in: 8th International Conference on “Mathematics. Information Technologies. Education:” Modern Machine Learning Technologies and Data Science</source>
          , vol.
          <volume>2386</volume>
          (
          <year>2019</year>
          )
          <fpage>287</fpage>
          -
          <lpage>296</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>R.</given-names>
            <surname>Marusenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Sokolov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Buriachok</surname>
          </string-name>
          ,
          <article-title>Experimental Evaluation of Phishing Attack on High School Students, Advances in Computer Science for Engineering and Education III, vol</article-title>
          .
          <volume>1247</volume>
          (
          <year>2020</year>
          )
          <fpage>668</fpage>
          -
          <lpage>680</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -55506-1_
          <fpage>59</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>CIS</given-names>
            <surname>Critical</surname>
          </string-name>
          <article-title>Security Controls Version 8</article-title>
          . URL: https://www.cisecurity.org /controls/v8
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>CIS</given-names>
            <surname>Controls v8 Mapping to</surname>
          </string-name>
          <string-name>
            <surname>ISO</surname>
          </string-name>
          /IEC 27001:
          <year>2022</year>
          . URL: https://www. cisecurity.org/insights/whitepapers/cis-controls-v8
          <string-name>
            <surname>-</surname>
          </string-name>
          mapping
          <string-name>
            <surname>-</surname>
          </string-name>
          to-isoiec-27001-2022
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <article-title>What are CIS Benchmarks?</article-title>
          . URL: https://aws.amazon.com/what-is/cisbenchmarks/#:~:text=
          <source>CIS%20Benchma rks%20from%20the%20Center,and%2 0manage%20their%20cybersecurity%2 0defenses</source>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>R.</given-names>
            <surname>Ferreira</surname>
          </string-name>
          ,
          <article-title>Policy Design in the Age of Digital Adoption: Explore how PolicyOps Can Drive Policy as Code Adoption in an Organization's Digital Transformation, 1st Edition</article-title>
          , Packt Publishing (
          <year>2022</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>C.</given-names>
            <surname>Adtani</surname>
          </string-name>
          , et al.,
          <article-title>Security as Code: The best (and Maybe Only) Path to Securing Cloud Applications and Systems (</article-title>
          <year>2022</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>S.</given-names>
            <surname>Das</surname>
          </string-name>
          ,
          <source>Security as Code, 1st Edition</source>
          (
          <year>2023</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>X.</given-names>
            <surname>Zhang</surname>
          </string-name>
          , Cloud Governance and
          <article-title>Compliance on AWS with Policy as Code (</article-title>
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>X.</given-names>
            <surname>Zhang</surname>
          </string-name>
          , Compliance as Code and
          <article-title>AutoRemediation with Cloud Custodian (</article-title>
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>O.</given-names>
            <surname>Vakhula</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Opirskyy</surname>
          </string-name>
          ,
          <string-name>
            <surname>O. Mykhaylova,</surname>
          </string-name>
          <article-title>Research on Security Challenges in Cloud Environments and Solutions Based on the “Security-as-</article-title>
          <source>Code” Approach Cybersecurity Providing in Information and Telecommunication</source>
          System Vol.
          <volume>3550</volume>
          (
          <year>2023</year>
          )
          <fpage>55</fpage>
          -
          <lpage>69</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>B.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <article-title>Using Open Policy Agent (OPA) to Apply Policy-as-</article-title>
          <string-name>
            <surname>Code to</surname>
          </string-name>
          Infrastructureas-Code (
          <year>2022</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          <source>[24] CIS Amazon Web Services Foundations Benchmark v2.0</source>
          .
          <issue>0</issue>
          (
          <year>2023</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>A.</given-names>
            <surname>Sukianto</surname>
          </string-name>
          , Common Cloud Misconfigurations and How to Avoid Them (
          <year>2023</year>
          ). URL: https://www.upguard.com/blog/ cloud-misconfiguration
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>Policy</given-names>
            <surname>Language</surname>
          </string-name>
          <article-title>Documentation</article-title>
          . URL: https://www.openpolicyagent.org/docs /latest/policy-language/
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <article-title>Guest Expert on GitGuardian, What is Policy-as-</article-title>
          <string-name>
            <surname>Code</surname>
          </string-name>
          ?
          <article-title>An Introduction to Open Policy Agent (</article-title>
          <year>2022</year>
          ). URL: https://blog.gitguardian.
          <article-title>com/what-ispolicy-as-code-an-introduction-to-openpolicy-agent/</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>