<!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>Research on Security Challenges in Cloud Environments and Solutions based on the “Security-as-Code” Approach</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>Ivan Opirskyy</string-name>
          <email>ivan.r.opirskyi@lpnu.ua</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Olha Mykhaylova</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Lviv Polytechnic National University</institution>
          ,
          <addr-line>5 Knyaz Roman str., Lviv, 79013</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <fpage>55</fpage>
      <lpage>69</lpage>
      <abstract>
        <p>“Security as code” is an approach to security organization in cloud environments, which is based on the method of integrating security controls, policies, and best practices directly into the software development and deployment processes. The integration process includes the transformation of security requirements and configurations into software code, which in turn is considered an integral part of the full software development life cycle. By embedding security measures into code, scripts, templates, and automated workflows, an organization ensures that there are well-defined security controls that will be consistently enforced across all operational phases of software creation (development, testing, implementation, and support). This article examines the main problems of building security in cloud environments and their causes, also considers the components and principles of the “Security as Code” approach, implementation examples with an explanation, of the advantages of this approach, as well as the role of DevSecOps. This article aims to help readers understand the importance of the security-as-code approach as one of the most effective methods for managing security in cloud environments. As cloud environments continue to evolve and proliferate, and threats become more sophisticated, the Security as Code approach represents a core strategy for proactively protecting digital assets. This publication serves as a guide to understanding, implementing, and benefiting from a security-as-code approach, providing insight into the future cloud security landscape and the critical role of automation and integration in addressing today's security challenges. To support the research, an extensive review of literature and articles providing information on the Security as Code approach and its application was conducted.</p>
      </abstract>
      <kwd-group>
        <kwd>1 Security as code</kwd>
        <kwd>Infrastructure as code</kwd>
        <kwd>DevSecOps</kwd>
        <kwd>DevOps</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>
        In cloud computing, which is constantly
evolving and combining flexibility and
innovation, the importance of robust security
measures cannot be overstated. As
organizations continue to harness the
transformative potential of cloud technologies,
the need to protect digital assets from a
growing spectrum of threats becomes not just
a priority but a strategic imperative [
        <xref ref-type="bibr" rid="ref1">1–2</xref>
        ].
“Security as Code”, born at the intersection of
cybersecurity and software development,
represents a paradigm shift in how
organizations conceptualize, implement, and
maintain their security strategies in cloud
environments. This approach encapsulates the
fusion of security principles into code, creating
a proactive, automated, and integrated security
ecosystem seamlessly aligned with modern
development methodologies [3–4].
      </p>
      <p>
        The authors examine the fundamental
security challenges faced by consumers of
cloud services. Root causes include a lack of The latest research in this field shows, that,
understanding of the shared responsibility Security as Code is the driving force behind
model, which is foundational; the dynamic and future application security. According to
scalable nature of the environment, unlike O’Reilly, Security as Code is a way to build
traditional on-premises infrastructure; Security by mapping how code and
inadequate visibility of resources or “shadow infrastructure change to DevOps tools and
IT;” underestimating risks associated with workflows and finding places to add security
APIs; the complexity of navigating data in a controls, tests, and ports without cost or delay.
distributed environment, including sensitive Developers can define the infrastructure using
data; manual configuration settings and the a programming language with Infrastructure as
high likelihood of errors due to human factors; Code. You need to do the same to bring security
the complexity of Identity and Access up to DevOps speed [
        <xref ref-type="bibr" rid="ref12">11</xref>
        ].
      </p>
      <p>Management (IAM) services; multi-cloud and All of the above allows us to assert the
hybrid environments; and the shortage of relevance of the issue and calls for proposals
qualified cloud security professionals— on its resolution. In this publication, we will
demand outweighs supply [5]. focus on the active security approach as a form</p>
      <p>
        This publication aims to highlight the of security code that can be considered
aforementioned problems, actuality, and their preventive security control.
root causes, and to explore the “Security as
Code” approach, which can help to solve part of 2. Challenges in Organizing
it and mitigate risks related. A lot of articles
point out that DevOps practitioners degrade Security in Cloud Environments
the priority of security since the regard 2.1. Shared Responsibility Model,
security is the biggest hurdle to rapid Leading to Confusion over Security
application development considering Responsibilities
traditional security methods do not fit the
pipeline and are an inhibitor to DevOps agility [
        <xref ref-type="bibr" rid="ref7">6</xref>
        ]. The problem of cloud providers following a
      </p>
      <p>
        Traditionally, security measures are shared responsibility model, leading to
typically addressed after the development confusion over who is responsible for securing
team has completed the product. This approach what, is a crucial aspect of cloud security that
often results in a backlog of challenging bugs to organizations must address. In cloud
fix. The project manager may think, “If we computing, the shared responsibility model is
implement all these fixes, we'll be delayed, and a widely accepted framework that defines the
the company won't be pleased. Let's put it off division of security responsibilities between
until the next iteration” [
        <xref ref-type="bibr" rid="ref8 ref9">7–8</xref>
        ]. the Cloud Service Provider (CSP) and the cloud
      </p>
      <p>
        As an illustration, consider a scenario where customer (organization using the cloud
a product manager wants to grant customers services). The exact responsibilities assigned
access to certain data without requiring any to each party can vary depending on the type
form of authentication. In the past, the security of cloud service, such as Infrastructure as a
team has consistently rejected such requests. Service (IaaS), Platform as a Service (PaaS), or
However, with the implementation of Software as a Service (SaaS).
DevSecOps, the response shifts to, “Yes, you can
provide this access, but it must be done in a
secure manner” [
        <xref ref-type="bibr" rid="ref10">9</xref>
        ]. In many instances, in
pursuit of business agility and velocity,
essential security aspects are overlooked in
operational applications. Security is often
relegated to the final check, conducted after the
application is fully developed. In practical
terms, ensuring security with each iteration
can be a considerable challenge, both in terms
of time and financial resources, unless it is
deliberately incorporated into the early stages
of the DevOps workflow [
        <xref ref-type="bibr" rid="ref11 ref2">10</xref>
        ].
Cloud providers, like AWS, Azure, and Google
Cloud, are responsible for the security of the
underlying cloud infrastructure, including the
physical data centers, networking, and the
hypervisor layer. They also typically provide
security features and controls related to the
overall cloud platform’s integrity and availability.
      </p>
      <p>On the other hand, cloud customers
(organizations) are responsible for securing
their data, applications, configurations, and
access controls within the cloud environment.</p>
      <p>This includes securing virtual machines,
containers, databases, and any other resources
they deploy on the cloud platform. Customers
are also responsible for managing user access
and permissions, implementing encryption,
and configuring security settings specific to
their cloud resources.</p>
      <p>The challenge arises when there is a lack of
clarity or understanding about where the CSP’s
responsibilities end and the customer’s
responsibilities begin.
2.2. Lack of Visibility—Inadequate
Insight into Cloud Environments
The cloud environment, by its nature, is
complex and consists of numerous services,
components, containers, and microservices
distributed across different regions. This
distributed multi-component structure creates
a vast attack surface, making it extremely
important to maintain complete visibility of all
assets within the cloud ecosystem.</p>
      <p>Traditional security tools designed for
onpremises environments find it challenging to
adapt to the dynamic cloud landscape. The
traditional concept of a “perimeter” lacks clear
boundaries, complicating the monitoring and
protection of interactions between various
components.</p>
      <p>The lack of visibility leads to “blind spots”
where security teams cannot effectively
monitor and detect events in cloud resources.</p>
      <p>Configuration errors, anomalous behavior,
unauthorized access, and potential breaches
can go unnoticed, putting confidential data and
critical business services at risk.</p>
      <p>Detecting incidents, indicators of
compromise, identifying the root cause of an
incident (the so-called “patient zero”), tracking
the spread, and containment become
challenging without comprehensive
monitoring of the entire cloud ecosystem.</p>
      <p>Compliance with standards is a crucial
requirement for organizations. The absence of
visibility complicates the ability to
demonstrate compliance with standards to
auditors and regulatory bodies, potentially
resulting in fines and reputational damage.</p>
      <sec id="sec-1-1">
        <title>2.3. Complex IAM—Ensuring Comprehensive Identity and Access Management Across Multiple Cloud Services</title>
        <p>Modern cloud environments encompass a wide
range of services, each with its own set of user
accounts, access control mechanisms, and
authorization systems. These services can
cover infrastructure resources, applications,
databases, and more, and are often provided by
various cloud providers.</p>
        <p>Each cloud provider typically maintains its
repository of identity data, which stores user
information, account details, and access
policies. This diversity of identity data
repositories creates what is known as a user
identity data silo and complicates the task of
unified identity management across all
providers and services.</p>
        <p>In multi-cloud environments, users and
applications often require interaction between
different services. Managing access and
permissions necessary for these interactions
can quickly become complex, leading to errors,
misconfigurations, and security gaps.</p>
        <p>The vast number of permissions and roles that
need to be defined, managed, and reviewed
increases the likelihood of errors and oversight.</p>
        <p>Complex access management scenarios
amplify security risks. Users may be granted
excessive permissions or incorrect
configurations may inadvertently provide
unauthorized access to confidential data. These
vulnerabilities can be exploited by malicious
actors to gain unauthorized access.
Cloud services heavily rely on Application
As organizations transition to cloud Programming Interfaces (APIs), which can be
environments, the management of security vulnerable to attacks. Very often, security
configurations becomes a paramount concern. engineers underestimate this vector.
Cloud services offer unprecedented flexibility Application Programming Interfaces serve
and agility, allowing resources to be as a crucial link facilitating interactions
provisioned, modified, and decommissioned between cloud services. This technology allows
rapidly. However, this dynamic nature developers to access cloud resources,
introduces a significant challenge: ensuring manipulate data, and execute functions
consistent and robust security configurations remotely. While this streamlined interaction
across the multitude of services, instances, and enhances efficiency, it also exposes APIs to
platforms that constitute a modern cloud potential security risks.
ecosystem. Because APIs facilitate communication</p>
        <p>Cloud environments are designed for agility, between various components, they can become
with resources being created, scaled, and entry points for attackers. Weaknesses in API
terminated dynamically. This dynamism design, implementation, or authentication can
accelerates development and deployment but be exploited for unauthorized access, injection
complicates the task of maintaining consistent attacks, or data breaches.
security settings. Common vulnerabilities that can harm APIs</p>
        <p>In the cloud, security misconfigurations are in cloud environments include:
a leading cause of data breaches and cyber Injection Attacks: Insufficient input data
incidents. A single misconfigured security validation can lead to injection attacks where
group, firewall rule, or access policy can expose malicious code or commands are inserted into
sensitive resources to unauthorized access. the input.</p>
        <p>Modern cloud environments offer a bunch Broken Authentication: Weak
of services, each with its security controls, authentication mechanisms or improper
access mechanisms, and configuration options. session management can allow unauthorized</p>
        <sec id="sec-1-1-1">
          <title>Securing virtual machines, databases, access to APIs.</title>
          <p>serverless functions, and containers requires Insecure Deserialization: Mishandling
mastering different configurations. serialized data can result in remote code</p>
        </sec>
        <sec id="sec-1-1-2">
          <title>Multi-cloud and hybrid cloud strategies execution.</title>
          <p>often involve services spread across different Inadequate Authorization: Flaws in access
cloud providers, regions, and accounts. control mechanisms can permit users to
Ensuring consistent security configurations perform actions they are not authorized for.
across this scale is a formidable task. Exposure of Sensitive Data: Mishandling</p>
          <p>As cloud resources evolve, security of data or improper encryption can lead to the
configurations can drift away from best leakage of sensitive information.
practices or organizational policies. Manual In multi-cloud and hybrid cloud
interventions and updates can lead to environments, third-party developer APIs
deviations from desired security settings. further complicate the security landscape.</p>
          <p>Meeting regulatory requirements and Organizations often rely on external APIs for
industry standards demands consistent specialized services, expanding the attack
security configurations. Failing to maintain surface.
these configurations can result in compliance
violations and legal consequences.</p>
        </sec>
      </sec>
      <sec id="sec-1-2">
        <title>2.6. Data Protection and Compliance Challenges Arising from Dispersed Cloud Data</title>
        <p>Cloud environments offer flexibility, allowing
organizations to distribute data among
different services, regions, and even multiple
cloud providers. Data can be stored in
databases, file systems, object stores, and more,
encompassing a wide spectrum of cloud
resources.</p>
        <p>Effective data protection requires
encryption both at rest and during
transmission and processing. However,
different cloud services may employ various
encryption methods, key management
techniques, and security levels. Managing
encryption in these services can be complex.</p>
        <p>Managing access control and permissions
for decentralized data is a challenging task.
Improperly configured access control can lead
to unauthorized access, data leaks, and
compliance violations.</p>
        <p>In multi-cloud environments where data
can be stored on various cloud platforms,
compliance with regulatory standards
becomes even more challenging.</p>
        <p>Compliance with data residency and
jurisdiction rules poses a complex challenge.
Ensuring data storage and processing within
the legal boundaries of relevant regulations can
be problematic when data is distributed across
cloud services with different geographical
locations.</p>
      </sec>
      <sec id="sec-1-3">
        <title>2.7. Multi-Cloud and Hybrid Environments—Navigating Complex Security Management Across Diverse Platforms</title>
        <p>Multi-cloud and hybrid environments, where
multiple cloud providers are used, each with
different services, interfaces, and security
paradigms, multiply the complexity of security
management.</p>
        <p>Each cloud platform can become a silo of
security practices, making it challenging to
maintain consistency in security policies,
access controls, and threat detection
mechanisms.</p>
        <p>Effective security management often
requires specialized knowledge for each of the
cloud providers. Teams must understand the
nuances of security features and configurations
for each platform.</p>
        <p>Consistent threat detection and response
processes in multi-cloud environments pose a
challenge for security teams. Different
monitoring tools and mechanisms complicate
the standardization of threat detection
procedures and incident response.</p>
        <p>In hybrid environments, where data moves
between on-premises infrastructure and
multiple cloud platforms, data protection and
secure data transfer become even more
complex due to a lack of complete visibility.
2.8. Lack of Cloud Security Expertise—
Confronting the Challenge of Insufficient
Cloud Security Knowledge
The rapid evolution of cloud computing has
revolutionized the way organizations operate,
but it has also exposed a critical challenge: the
scarcity of cloud security expertise. As
businesses transition to cloud environments,
they often find themselves grappling with the
complexities of securing these dynamic and
distributed systems. The shortage of skilled
professionals who possess the necessary cloud
security knowledge presents a significant
obstacle to achieving robust cloud security
practices.</p>
        <p>Cloud security is a specialized domain that
demands an understanding of both traditional
cybersecurity principles and the unique
intricacies of cloud platforms. Rapid
technological advancements continually
reshape the threat landscape, necessitating
constant learning and adaptation.</p>
        <p>Cloud environments encompass an array of
services, each with its own security controls,
configurations, and best practices. Securing
virtual machines, containers, serverless
functions, and data stores requires expertise
that spans a wide spectrum of cloud services.</p>
        <p>The demand for cloud security experts
outpaces the available talent pool.</p>
        <p>Organizations struggle to find and retain
professionals with the necessary skills to
architect, implement, and manage robust cloud
security measures.</p>
        <p>In the absence of cloud security expertise,
misconfigurations become a common risk.</p>
        <p>Poorly configured security settings can
inadvertently expose sensitive data, increase
attack surfaces, and compromise the overall successfully implement the “Security as Code”
security posture. approach, we need a comprehensive cloud</p>
        <p>Effective threat detection and incident strategy that also works as code. The
response in cloud environments require fundamental idea is that we cannot secure
specialized knowledge. Identifying and something using the “Security as Code”
responding to cloud-specific threats and approach if it’s not implemented as code.
vulnerabilities requires understanding the Most consumers of cloud services agree that
nuances of cloud operations. “Infrastructure as Code” (IaC) allows for the</p>
        <p>
          Different cloud providers offer distinct rapid deployment of services in the cloud
security features, tools, and practices. Cloud without manual configuration and,
security experts must navigate these nuances consequently, errors. “Security as Code” takes
to implement consistent security measures this approach further by defining security
across diverse platforms. policies, standards, and best practices
programmatically so that they can be used by
3. “Security as a Code” Approach default in configuration scripts used to set up
cloud services and systems. IT departments can
for Cloud Environments transition from the eternal balance between
business flexibility and security to the
Considering all the problems mentioned above, realization that these elements can be
which can sometimes be a hindrance to combined to provide an adequate level of both
organizations migrating to the cloud,— without sacrificing either.
“Security as code” (SaC has been the most Let’s consider a simplified example (Fig. 2):
effective approach to securing cloud workloads organizational policies contain a list of
with speed and agility. At this point, most cloud required security controls. Controls are broken
leaders agree that Infrastructure as Code (IaC) down into rules, which are transformed into
allows them to automate the building of code that is understandable by a Centralized
systems in the cloud without error-prone Compliance Check service. Later, rules are
manual configuration. SaC takes this one step grouped into policies organized hierarchically
further by defining cybersecurity policies and and defined by an inheritance structure. The
standards programmatically, so they can be Centralized Compliance Check service serves,
referenced automatically in the configuration as a conditional gate where infrastructure code
scripts used to provision cloud systems and is checked for compliance with the resources
systems running in the cloud can be compared that are supposed to be deployed according to
with security policies to prevent “drift” [
          <xref ref-type="bibr" rid="ref14">13</xref>
          ]. To the specified policies [
          <xref ref-type="bibr" rid="ref15 ref16">14–15</xref>
          ].
For example, if an organization sets a policy the policy is automatically rejected. Examples
that dictates personal data or payment card of policies could also include requirements
data in storage must be encrypted, this policy such as container or virtual machine
will be declared as one of the rules that are deployment images must come from trusted
automatically triggered when DevSecOps registries, mandatory database backup,
deploys cloud resources. A code that violates resource replication across two availability
zones, mandatory disk encryption for virtual
machines, tagging and naming conventions for
resources, and so on [
          <xref ref-type="bibr" rid="ref16">15</xref>
          ].
        </p>
        <p>Policies can be sourced from standards,
regulations, best practices, and
recommendations, including external
institutions such as:
• Cloud Security Alliance (CSA)
• Center for Internet Security (CIS)
• NIST
• GDPR
• HIPAA
• PCI DSS
• SOC2
• Internal
• Others.</p>
        <p>In most cases, these requirements and
recommendations can be described as code,
which can serve as preventive, detective, and
reactive controls.
IaC is a prerequisite preceding the static policy
compliance check. IaC can be implemented
using tools like CloudFormation for AWS,
Deployment management for GCP, or Resource
Manager for Azure, and for a more universal
solution, Terraform or Pulumi. Static policy
checks should be integrated into the
infrastructure code’s CI/CD pipeline and
adhere to GitOps best practices to avoid the
installation of erroneous configurations and to
correct inconsistencies at an early stage.</p>
        <p>Detective control involves checking for
inconsistencies in resource changes caused by
uncontrolled factors such as manual changes or
the establishment of a process that does not
adhere to IaC standards. Dynamic policy
checking provides real-time scanning of
infrastructure to confirm its current state.</p>
        <p>Reactive control is performed according to
detected non-compliance events and ensures
automatic correction using serverless
functions.</p>
        <p>
          The component of the Centralized Policy
Compliance Verification Service can be
implemented using Open Policy Agent (OPA) or
Regula, both of which are open-source
software. In the Cloud Native Computing
Foundation (CNCF), OPA was adopted as an
incubating project in April 2019 and then
moved to the Graduated maturity level on
January 29, 2021. It provides a unified
framework for policy enforcement across the
stack. OPA allows you to decouple policy
decisions from your services, APIs, and
microservices and manage policies separately
from your application code. OPA can be used in
API management to declaratively define and
enforce policy at multiple layers [
          <xref ref-type="bibr" rid="ref17 ref18">16–17</xref>
          ].
        </p>
        <p>OPA can work with JSON files and perform
static Infrastructure as Code checks, aligning
with preventive control practices.</p>
        <p>Regarding the tool for dynamically checking
the current state’s policy compliance for
already running cloud resources, Cloud
Custodian can be used. It is an open-source
product that serves as both a detective and, if
needed, a reactive control. This tool is built in
Python, agentless, and can be deployed as a
serverless function, with rules described in</p>
        <p>
          YAML format [
          <xref ref-type="bibr" rid="ref19">18</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>4. Policy examples based on CIS Amazon Web Services Foundations Benchmark v2.0.0</title>
      <p>All CIS Benchmarks focus on technical
configuration settings used to maintain and/or
increase the security of the addressed
technology, and they should be used in
conjunction with other essential cyber hygiene
tasks like:
• Monitoring the base operating
system for vulnerabilities and quickly
updating with the latest security
patches.
• Monitoring applications and libraries
for vulnerabilities and quickly
updating with the latest security
patches.</p>
      <p>In the end, the CIS Benchmarks are designed
as a key component of a comprehensive
cybersecurity program.</p>
      <p>
        This document provides prescriptive
guidance for configuring security options for a
subset of Amazon Web Services with an
emphasis on foundational, testable, and
architecture-agnostic settings [
        <xref ref-type="bibr" rid="ref20">19</xref>
        ].
      </p>
      <p>CIS Amazon Web Services Foundations
Benchmark v2.0.0 - 06-28-2023 - 1.16. Ensure
IAM policies that allow full “*:*” administrative
privileges are not attached</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.</p>
      <p>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) {
# 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"]
some i, statement := statements {</p>
      <p>statement.Action ==
administrativePrivileges[_]
statement.Effect == "Allow"
policyName ==
resource["values"]["name"]["new"]
}</p>
      <p>The policy imports the input.tfplan input,
which represents the Terraform plan.</p>
      <p>It uses a deny rule to check each IAM policy
resource in the Terraform plan. If the policy
contains any statements that allow full
administrative privileges (specified as “*:*”), it
generates a denial message.</p>
      <p>The hasFullAdminPrivileges function
checks if the IAM policy document contains any
statements that allow *:* (full administrative
privileges).</p>
      <p>The default allow = true statement at the
end of the policy allows all other resources not
matched by the deny rule.</p>
      <p>CIS Amazon Web Services Foundations
Benchmark v2.0.0 - 06-28-2023 -2.1.1. Ensure
S3 Bucket Policy is set to deny HTTP requests
package
terraform.aws_s3_bucket_policy_validatio
n
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)</p>
      <p>}
}
containsHttpCondition(condition) {
keys := keys(condition)
"IpAddress" in keys
condition["IpAddress"] ==
{"aws:SourceIp": "HTTP request IP
address"}
}
default allow = true
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 hasDenyHttpStatement function 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 allows all other resources not
matched by the deny rule.</p>
      <p>CIS Amazon Web Services Foundations
Benchmark v2.0.0 - 06-28-2023 - 2.2.1. Ensure
EBS Volume Encryption is Enabled in all
Regions
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"]
encryption_enabled == true
}
default allow = true</p>
      <p>The policy imports the input.tfplan input,
which represents the Terraform plan.
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 (i.e., EBS
volume encryption is not enabled), it generates
a denial message.</p>
      <p>The default allow = true statement at the
end of the policy allows all other resources not
matched by the deny rule.</p>
      <p>CIS Amazon Web Services Foundations
Benchmark v2.0.0 - 06-28-2023 - 2.3.1. Ensure
that encryption-at-rest is enabled for RDS
Instances
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"]
attribute_value :=
resource["values"]["storage_encrypted"][
"new"]</p>
      <p>attribute_value == true
}
default allow = false</p>
      <p>The policy imports the input.tfplan input,
which represents the Terraform plan.</p>
      <p>It uses a deny rule to check each AWS RDS
instance resource in the Terraform plan. If the
storage_encrypted attribute is not set to true
(i.e., encryption at rest is not enabled), it
generates a denial message.</p>
      <p>In AWS, storage_encrypted is typically used
to enable encryption at rest.</p>
      <p>The default allow = true statement at the
end of the policy allows all other resources not
matched by the deny rule.</p>
      <p>CIS Amazon Web Services Foundations
Benchmark v2.0.0 - 06-28-2023 - 3.1. Ensure
CloudTrail is enabled in all regions
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</p>
      <p>The policy imports the input.tfplan input,
which represents the Terraform plan.</p>
      <p>It uses a deny rule to check each AWS
CloudTrail resource in the Terraform plan. If
the is_multi_region_trail attribute is not set to
true (i.e., CloudTrail is not configured to be
enabled in all regions), it generates a denial
message.</p>
      <p>The default allow = true statement at the
end of the policy allows all other resources not
matched by the deny rule.</p>
      <p>CIS Amazon Web Services Foundations
Benchmark v2.0.0 - 06-28-2023 - 5.2. Ensure
no security groups allow ingress from 0.0.0.0/0
to remote server administration ports.
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) {</p>
      <p>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,
which represents the Terraform plan.</p>
      <p>It checks each AWS Security Group Rule
resource 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.</p>
      <p>The isRemoteAdminPort function checks if
the rule’s from_port matches a remote server
administration port (e.g., 22 for SSH). You can
add more ports as needed.</p>
      <p>The isEverywhereAllowed function checks
if 0.0.0.0/0 is present in the cidr_blocks of the
rule, indicating that it allows ingress from
anywhere.</p>
      <p>The default allow = true statement at the
end of the policy allows all other resources not
matched by the deny rule.</p>
      <p>CIS Amazon Web Services Foundations
Benchmark v2.0.0 - 06-28-2023 - 4.9. Ensure</p>
      <p>AWS Config configuration changes are
monitored.
package terraform.aws_config_monitoring
import input.tfplan
deny[msg] {
resource = tfplan.resources[_]
resource["provider"]
"provider[\"aws\"]"</p>
      <p>resource["type"]
"aws_config_configuration_recorder"
==
==
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 AWS Config 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 hasConfigMonitoring function 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 allows all other resources not
matched by the deny rule.</p>
      <p>
        Rego, however, is a language that works
very differently than most and can be quite
unintuitive at first glance. It’s more similar to
SQL than to common imperative languages like
Python. This means that the learning curve can
be quite steep. Moreover, copy-paste
development will very often not help you
understand Rego—and authoring complicated
policies—better [
        <xref ref-type="bibr" rid="ref21">20</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>5. DevSecOps role in Implemen</title>
      <p>tation of “Security as a Code”</p>
      <p>Approach
DevSecOps is the evolution of the DevOps
philosophy, which integrates security into the
software development and deployment
process from its early stages. The role of
DevSecOps in the “Security as Code” paradigm
is pivotal, as it ensures that security concerns
are embedded throughout the entire software
development lifecycle, providing a proactive intersect with the “Security as Code” approach.
and holistic approach to cloud security. To aid in understanding, we’ll use a graphical</p>
      <p>
        Let’s consider the fundamental principles of representation of the software development
DevSecOps methodologies and how they lifecycle with security controls highlighted.
Let’s review the popular DevSecOps
methodology Shift-Left principle. The principle
of Shift-Left in DevSecOps practices means that
security integration should occur at the early
stages of development. “Security as Code”
precisely facilitates such inclusion of controls,
reducing the risk of deploying unprotected
configurations [
        <xref ref-type="bibr" rid="ref22">21</xref>
        ]
      </p>
      <p>Let’s dive deeper, and answer on question—
why Shift-Left security, before the advent of
agile development practices and cloud
computing, developers would request
infrastructure from IT and receive a server
weeks or months later. Over the past two
decades, IT has shifted left. Today development
infrastructure is fully automated and operates
on a self service basis:</p>
      <p>Developers can provision resources to
public clouds such as AWS, GCP, or Azure
without involving operations or IT staff:
• Continuous integration and continuous
deployment (CI/CD) processes
automatically set up testing, staging, and
production environments in the cloud or
on-premises and tear them down when
they are no longer needed.</p>
      <p>• Infrastructure-as-Code (IaC) is widely
used to deploy environments
declaratively, using tools like Amazon</p>
      <p>CloudFormation and Terraform.
• Kubernetes is everywhere, enabling
organizations to provision containerized
workloads dynamically using
automated, adaptive processes.</p>
      <p>This shift has tremendously improved
development productivity and velocity, but
also raises serious security concerns. In this
fast paced environment, there is little time for
post-development security reviews of new
software versions or analysis of cloud
infrastructure configurations. Even when
problems are discovered, there is little time for
remediation before the next development
sprint begins.</p>
      <p>
        DevOps organizations realized that they
must also shift security left to avoid
introducing more security risks than security
and operations teams can manage. This
movement is known as DevSecOps, and uses a
variety of tools and technologies to close the
gap and enable rapid, automated security
assessment as part of the CI/CD pipeline [
        <xref ref-type="bibr" rid="ref23">22</xref>
        ].
Automated compliance checks in DevSecOps 6. Fundamental principles of the
imply maximum automation and the "Security as Code" approach
elimination of manual components in
configurations, aligning well with the “Security
as Code” approach. Automated security checks We can highlight the following fundamental
and scanning can be easily integrated into technological principles for SaC:
continuous integration and continuous • Automation
deployment (CI/CD) pipelines (Fig. 4). This “Security as Code” relies on automation for
ensures that code and infrastructure are the consistent and scalable implementation of
evaluated for security compliance at each stage security policies. This includes automating the
of development. deployment of security controls, vulnerability
      </p>
      <p>A collaborative approach in DevSecOps detection, and issue remediation.
involves cooperation between development, • Version Control
operations, and security teams. In the context “Security as Code” should be treated as
of “Security as Code”, this collaboration software code and managed within a version
ensures that all teams understand and adhere control system. This ensures a clear history of
to security requirements. Security experts changes, facilitates collaboration among teams,
guide defining policies, while developers and allows for testing changes in a controlled
implement these policies in code. environment before production.</p>
      <p>Code review and analysis are continuous • Reusability
processes in DevSecOps. In the “Security as “Security as Code” should be modular and
Code” paradigm, this process extends beyond designed for reusability. This enables different
functional code and encompasses security- teams to use and share standardized security
related code. Automated code analysis tools control components and configurations,
can help identify security vulnerabilities and reducing the time and effort required for
compliance violations. security implementation.</p>
      <p>
        Continuous monitoring is a fundamental • Open Standards
aspect of DevSecOps, involving ongoing “Security as Code” should be built upon
monitoring of applications and infrastructure. open standards. This provides a more flexible
Using the “Security as Code” approach, you can and vendor-agnostic approach, reducing
monitor the cloud environment for security dependence on specific providers and allowing
policy and configuration deviations. teams to choose the best solutions for various
Automated monitoring tools can rapidly use cases [
        <xref ref-type="bibr" rid="ref25">24</xref>
        ].
identify deviations from established security Also, there are key organizational principles
standards and remediate them to the for achieving success in the implementation of
appropriate level. SaC:
      </p>
      <p>DevSecOps should have incident response • Establishing Clear Ownership and
tools for rapid security incident response. Accountability
Implementing the “Security as Code” approach The initial principle underscores the
allows for the automation of incident response importance of emphasizing ownership and
concerning deviations from established accountability within an organization. This
practices and policies. The ability to react involves creating an internal framework to
quickly is critically important. govern roles, responsibilities, and permissions.</p>
      <p>
        The synergy between DevSecOps For example, determining who can author
methodologies and the “Security as Code” policies and for which aspects of the cloud
approach creates a reliable security foundation infrastructure is vital.
for cloud environments. It aligns security with • Develop and Administer Codified
the principles of automation, collaboration, and Controls
continuous improvement, enabling The second principle revolves around the
organizations to actively address security creation and management of control objectives
challenges in a dynamic cloud landscape [
        <xref ref-type="bibr" rid="ref24">23</xref>
        ]. tailored to address specific, identified use
cases. Crafting policy content that is detailed
enough to meet established cloud control
standards is essential. Additionally, it involves
efficiently managing an ever-expanding
inventory of codified security assets.
      </p>
      <p>• Implement Cloud Security Controls</p>
      <p>Thoroughly</p>
      <p>The third and final principle encompasses
the widespread application of security
measures and safeguards wherever feasible.</p>
      <p>Employ APIs to embed security mechanisms
into source code management tools, CI/CD
pipelines, and runtime environments.</p>
      <p>Continuously perform audits on cloud services
and workloads to assess their security,
resilience, and adherence to regulatory
requirements. Furthermore, establish a unified
framework to enhance visibility, control, and
collaboration across multi-cloud environments.</p>
      <p>
        All the principles mentioned above,
technological and organizational, can help
avoid mistakes in the initial phases of SaC
implementation and are indispensable for
establishing a strong, adaptable, and agile
Security-as-Code program to address the
everevolving demands of public clouds [
        <xref ref-type="bibr" rid="ref26">25</xref>
        ].
7. Advantages of the “Security as
      </p>
      <p>Code” Approach
The first advantage is speed. To fully realize the
business benefits of the cloud, security teams
must move at a pace they are not accustomed
to in on-premises environments. Manual
security control configurations create friction
that slows down progress and questions the
overall value of the cloud for the business.</p>
      <p>The second advantage is risk reduction.</p>
      <p>Local security control tools simply do not
account for the nuances of the cloud. Cloud
security requires its components to evolve
throughout the entire development lifecycle.</p>
      <p>The only way to achieve this level of
integration is through “Security as Code”.</p>
      <p>This approach fosters business growth.</p>
      <p>Security and compliance requirements are
becoming increasingly important for company
products and services. In this regard, “Security
as Code” not only accelerates time-to-market
but also expands opportunities for product
innovation and creativity without
compromising security.</p>
      <p>Improved collaboration and morale—as
development teams transitioned to more agile
workflows more quickly, it created a certain
gap with security teams that often operated
under older methodologies. When this
approach is applied, teams work in sync and
have a shared understanding because they
essentially speak the same language of code.</p>
      <p>Increased visibility and transparency—
with the “Security as Code” approach, security
teams clearly understand which policies are
applied and actively work with them.</p>
    </sec>
    <sec id="sec-4">
      <title>8. Summary</title>
      <p>In the ever-evolving world of cloud computing,
where flexibility and innovation are
paramount, the importance of robust security
practices cannot be overstated. As
organizations embark on digital
transformation journeys and migrate their
infrastructures to the cloud, the significance of
a dynamic and adaptable approach to security
becomes critical. The concept of ‘Security as
Code” is introduced, a revolutionary concept
that not only aligns with the requirements of
modern cloud environments but also
transforms the fundamentals of cybersecurity.
This publication has shown that “Security as
Code” is more than just a trendy term; it is a
transformational strategy that blends security
principles with software development
practices. By treating security policies,
controls, and best practices as code,
organizations gain the ability to automate,
integrate, and enforce security measures
throughout the entire lifecycle of cloud
resources. One of the key findings of our
research may be that “Security as Code” is
more than just a technological shift; it
represents an evolutionary leap. Teams
comprising developers, operators, and
security experts come together with a shared
goal of safeguarding digital assets. Through
automated testing, continuous monitoring, and
iterative improvements, these teams not only
close vulnerabilities but also promote a culture
of transparent security. Organizations across
various sectors have experienced
improvements in security, streamlined
compliance adherence, and accelerated
incident response times. The concept has
proven effective in various cloud
environments, from startups to enterprises,
providing a standardized environment that
aligns with the dynamics of cloud
infrastructure. “Security as Code” is a resilient
strategy capable of adapting to new threats
and technologies.</p>
    </sec>
    <sec id="sec-5">
      <title>9. Conclusion</title>
      <p>As a result of this research, it can be concluded
that the “Security as Code” approach, when
implemented correctly, can significantly
mitigate the risks posed by the aforementioned
challenges, which represent the most
significant threat to valuable information
assets and resources.</p>
      <p>This publication provides us with a
direction for further research aimed at
enhancing the effectiveness of this method. It
also explores the expansion of its application to
a wider range of services offered by cloud
providers and investigates the feasibility and
practicality of its application in environments
such as multi-cloud or hybrid setups.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <source>[1] [2] [3] [4]</source>
          [5]
          <string-name>
            <given-names>S.</given-names>
            <surname>Yevseiev</surname>
          </string-name>
          , et al.,
          <source>Modeling of Security Systems for Critical Infrastructure Facilities</source>
          , Technology
          <string-name>
            <surname>Center</surname>
          </string-name>
          (
          <year>2022</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <source>doi: 10</source>
          .15587/
          <fpage>978</fpage>
          -617-7319-57-2.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>S.</given-names>
            <surname>Vasylyshyn</surname>
          </string-name>
          , et al.,
          <article-title>A Model of Decoy System Based on Dynamic Attributes for Cybercrime Investigation</article-title>
          ,
          <string-name>
            <given-names>EasternEuropean J.</given-names>
            <surname>Enterp</surname>
          </string-name>
          . Technol.
          <volume>1</volume>
          (
          <issue>9</issue>
          ) (121) (
          <year>2023</year>
          )
          <fpage>6</fpage>
          -
          <lpage>20</lpage>
          . doi:
          <volume>10</volume>
          .15587/
          <fpage>1729</fpage>
          -
          <lpage>4061</lpage>
          .
          <year>2023</year>
          .
          <volume>273363</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          3188, no.
          <issue>2</issue>
          (
          <year>2022</year>
          )
          <fpage>197</fpage>
          -
          <lpage>206</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <given-names>P.</given-names>
            <surname>Anakhov</surname>
          </string-name>
          , et al.,
          <article-title>Increasing the Functional Network Stability in the Depression Zone of the Hydroelectric Power Station Reservoir</article-title>
          ,
          <source>in: Workshop on Emerging Technology Trends on the Smart Industry and the Internet of Things</source>
          , vol.
          <volume>3149</volume>
          (
          <year>2022</year>
          )
          <fpage>169</fpage>
          -
          <lpage>176</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <given-names>V.</given-names>
            <surname>Grechaninov</surname>
          </string-name>
          , et al.,
          <source>Formation of Dependability and Cyber Protection Model in Information Systems of Situational Center, in: Workshop on Emerging Technology Trends on the Smart Industry and the Internet of Things</source>
          , vol.
          <volume>3149</volume>
          (
          <year>2022</year>
          )
          <fpage>107</fpage>
          -
          <lpage>117</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Xin</surname>
          </string-name>
          , et al.,
          <article-title>Revisit Security in the Era of DevOps: An Evidence Based Inquiy Into DevSecOps Industry</article-title>
          , IET Softw.
          <volume>17</volume>
          (
          <issue>4</issue>
          ) (
          <year>2023</year>
          )
          <fpage>435</fpage>
          -
          <lpage>454</lpage>
          . doi:
          <volume>10</volume>
          .1049/sfw2.
          <fpage>12132</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>V.</given-names>
            <surname>Buriachok</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Sokolov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Skladannyi</surname>
          </string-name>
          ,
          <article-title>Security Rating Metrics for Distributed Wireless Systems</article-title>
          ,
          <source>in: Workshop of the 8th International Conference on "Mathematics. Information Technologies. Education": Modern Machine Learning Technologies and Data Science</source>
          , vol.
          <volume>2386</volume>
          (
          <year>2019</year>
          )
          <fpage>222</fpage>
          -
          <lpage>233</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>V.</given-names>
            <surname>Buhas</surname>
          </string-name>
          , et al.,
          <article-title>Using Machine Learning Techniques to Increase the Effectiveness of Cybersecurity</article-title>
          ,
          <source>in: Workshop on Cybersecurity Providing in Information and Telecommunication Systems</source>
          , vol.
          <volume>3188</volume>
          , no.
          <issue>2</issue>
          (
          <year>2021</year>
          )
          <fpage>273</fpage>
          -
          <lpage>281</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>R.</given-names>
            <surname>Kumar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Goyal</surname>
          </string-name>
          , Modeling Continuous Security:
          <string-name>
            <given-names>A Conceptual</given-names>
            <surname>Model for Automated DevSecOps Using OpenSource Software Over</surname>
          </string-name>
          <article-title>Cloud (ADOC), Comput</article-title>
          . Secur.
          <volume>97</volume>
          (
          <year>2020</year>
          ). doi:
          <volume>10</volume>
          .1016/j.cose.
          <year>2020</year>
          .
          <volume>101967</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>K.</given-names>
            <surname>Carter</surname>
          </string-name>
          , Francois Raynaud on DevSecOps,
          <source>IEEE Software 34(5)</source>
          (
          <year>2017</year>
          )
          <fpage>93</fpage>
          -
          <lpage>96</lpage>
          . doi:
          <volume>10</volume>
          .1109/ms.
          <year>2017</year>
          .
          <volume>3571578</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>S.</given-names>
            <surname>Das</surname>
          </string-name>
          ,
          <article-title>Security as Code, 1st</article-title>
          <string-name>
            <surname>Edition</surname>
            ,
            <given-names>O</given-names>
          </string-name>
          <string-name>
            <surname>'Reilly Media</surname>
          </string-name>
          (
          <year>2023</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Amazon</given-names>
            <surname>Web Service Documentation</surname>
          </string-name>
          , Shared Responsibility Model. URL: https://aws.amazon.com/compliance/s hared-responsibility-model/?nc1=h_ls
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [13]
          <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>
          ). URL: https://www.mckinsey.
          <article-title>com/ capabilities/mckinsey-digital/our-insigh ts/security-as-code-the-best-and-maybe -only-path-to-securing-cloud-applicatio ns-and-systems</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [14]
          <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</article-title>
          ,
          <source>1st Edition</source>
          (
          <year>2022</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>X.</given-names>
            <surname>Zhang</surname>
          </string-name>
          (
          <year>2021</year>
          ).
          <article-title>Cloud Governance and Compliance on AWS With Policy as Code (</article-title>
          <year>2011</year>
          ). URL: https://aws.amazon.com/ ru/blogs/opensource/cloud-governance
          <string-name>
            <surname>-</surname>
          </string-name>
          and
          <article-title>-compliance-on-aws-with-policy-ascode/</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>S.</given-names>
            <surname>Chevre</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A</given-names>
            . Soormally, 6 Open Source Projects to Boost Your
            <surname>Cloud-Native API Management Game</surname>
          </string-name>
          (
          <year>2023</year>
          ). URL: https://www.cncf.io/blog/2023/05/24 /6
          <article-title>-open-source-projects-to-boost-yourcloud-native-api-management-game/</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>T.</given-names>
            <surname>Sandall</surname>
          </string-name>
          ,
          <article-title>Open Policy Agent Graduates in the Cloud Native Computing Foundation (</article-title>
          <year>2021</year>
          ). URL: https://blog. openpolicyagent.org/open-policy
          <article-title>-agent -graduates-in-the-cloud-native-computi ng-foundation-f00145202a99</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [18]
          <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>
          ). URL: https://aws.amazon.com/ blogs/opensource/compliance
          <article-title>-as-codeand-auto-remediation-with-cloud-custo dian/</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>C.</given-names>
            <surname>Spiess</surname>
          </string-name>
          , et al.,
          <source>CIS Amazon Web Services Foundations Benchmark v2.0</source>
          .
          <issue>0</issue>
          (
          <year>2023</year>
          ). URL: https://www.scribd.com/d ocument/664903767/
          <string-name>
            <surname>CIS-Amazon-WebServices-Foundations-</surname>
          </string-name>
          Benchmark
          <source>-v2-0-0</source>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>J.</given-names>
            <surname>Martin</surname>
          </string-name>
          ,
          <article-title>Introduction ro Open Policy Agent (OPA) Rego Language (</article-title>
          <year>2022</year>
          ). URL: https://spacelift.io/blog/open-poli cy
          <article-title>-agent-rego</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [21]
          <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>
          ). URL: https://cloudse curityalliance.org/blog/2020/04/02/us ing-open
          <article-title>-policy-agent-opa-to-apply-poli cy-as-code-to-infrastructure-as-code/</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>S.</given-names>
            <surname>Gunja</surname>
          </string-name>
          ,
          <article-title>Shift Left vs Shift Right: A DevOps Mystery Solved (</article-title>
          <year>2023</year>
          ). URL: https://www.dynatrace.com/news/blog/ what
          <article-title>-is-shift-left-and-what-is-shift-right</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [23] G. Wilson,
          <article-title>DevSecOps A Leasder's Guide to Producing Secure Software Without Compromising Flow Feedback</article-title>
          and Continuous
          <string-name>
            <surname>Improvement</surname>
          </string-name>
          (
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [24]
          <article-title>Written by Mike Tyson of the Cloud Security as Code(SaC): How to Implement</article-title>
          and Why Use it? (
          <year>2023</year>
          ). URL: https://blog.brainboard.co/security-ascode-3d06e0d4cd80
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>T.</given-names>
            <surname>Karam</surname>
          </string-name>
          , Securing DevOps:
          <article-title>The ABCs of Security-as-</article-title>
          <string-name>
            <surname>Code</surname>
          </string-name>
          (
          <year>2022</year>
          ). URL: https://cloudsecurityalliance.org/blog/ 2022/01/19/securing
          <article-title>-devops-the-abcsof-security-as-code/</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>