<!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>Navigating the challenges and best practices in securing microservices architecture ⋆</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mykhailo Kotenko</string-name>
          <email>micha.kotenko@gmail.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Dmytro Moskalyk</string-name>
          <email>domoskalyk@gmail.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Valeriia Kovach</string-name>
          <email>valeriiakovach@gmail.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Viacheslav Osadchyi</string-name>
          <email>v.osadchyi@kubg.edu.ua</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Borys Grinchenko Kyiv Metropolitan University</institution>
          ,
          <addr-line>18/2 Bulvarno-Kudriavska str., 04053 Kyiv</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>CPITS-II 2024: Workshop on Cybersecurity Providing in Information and Telecommunication Systems II</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Center for Information-analytical and Technical Support of Nuclear Power Facilities Monitoring of the National Academy of Sciences of Ukraine</institution>
          ,
          <addr-line>34a Palladin ave., 03142 Kyiv</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>Interregional Academy of Personnel Management</institution>
          ,
          <addr-line>2 Frometivska str., 03039 Kyiv</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff4">
          <label>4</label>
          <institution>Zhytomyr Polytechnic State University</institution>
          ,
          <addr-line>103 Chudnivsyka str., 10005 Zhytomyr</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>This paper explores the multifaceted challenges of securing microservices architecture, a modern software development approach prioritizing scalability and flexibility. The study addresses issues such as the expanded attack surface, ensuring secure inter-service communication, managing distributed data, and implementing access control mechanisms, all of which pose significant security risks to microservices systems. Through a detailed analysis of existing security practices, the paper highlights critical practices, including service isolation, secure inter-service communication, robust authentication, authorization mechanisms, and strategies for protecting data at rest and in transit. Additionally, the role of modern technologies such as service mesh and API gateway in enhancing the security of microservices systems is examined. The analyzed practices underscore the critical need for a comprehensive and multi-layered security approach that mitigates risks and helps maintain distributed applications' integrity, confidentiality, and availability. Furthermore, the paper provides essential security recommendations for organizations seeking to implement or optimize microservices systems.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;microservice architecture security</kwd>
        <kwd>service isolation</kwd>
        <kwd>securing data in transit</kwd>
        <kwd>service mesh</kwd>
        <kwd>access control mechanisms</kwd>
        <kwd>API gateway</kwd>
        <kwd>securing data at rest 1</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Microservices Architecture (MSA) has rapidly become the
cornerstone of modern software development, offering
substantial scalability, flexibility, and reliability advantages.
In the context of active digital transformation, MSA enables
enterprises to swiftly adapt to market changes and
technological advancements, making it a priority choice
across various industries.</p>
      <p>However, the widespread adoption of microservices is
accompanied by significant security challenges. Despite its
numerous advantages, MSA’s decentralized and
interconnected structure introduces new vulnerabilities.
Each microservice, operating autonomously and
interacting over a network, increases the risk of
cyberattacks, which can lead to substantial security
breaches and system-wide failures. Ensuring the security
of such a distributed system requires innovative and
comprehensive approaches to counteract the emerging
threats in the context of rising cybercrime.</p>
      <p>
        As the adoption of microservices expands, security
issues are becoming increasingly pressing. Leveraging the
potential of MSA while managing cyber risks is a critical
factor for organizations striving to maintain their
competitiveness in the digital age, where information
security plays a pivotal role in ensuring seamless
operations and business growth [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <sec id="sec-1-1">
        <title>1.1. Overview of microservice architecture</title>
        <p>
          MSA represents a significant advancement in software
development, addressing the limitations inherent in
monolithic systems and service-oriented architecture (SOA)
by employing a more granular and adaptive methodological
approach. MSA was first introduced at a seminar in May
2011, where the term “microservice” was used for the first
time, and its definition was formalized by James Lewis and
Martin Fowler in 2014 [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. The defining characteristics of
this architectural paradigm include the design and
implementation of software as a collection of small,
autonomously scalable services, each operating in an
isolated process and communicating with other services
through lightweight protocols (Fig. 1) [
          <xref ref-type="bibr" rid="ref3 ref4">3, 4</xref>
          ].
        </p>
        <p>
          0009-0002-7839-6538 (M. Kotenko);
0000-0002-4421-9325 (D. Moskalyk);
0000-0002-1014-8979 (V. Kovach);
0000-0001-5659-4774 (V. Osadchyi)
© 2024 Copyright for this paper by its authors. Use permitted under
Creative Commons License Attribution 4.0 International (CC BY 4.0).
The differentiation between MSA and SOA is distinct and
significant. In contrast to SOA, which focuses on
implementing a strategy of service reuse across a wide
range of applications, MSA offers a strategy that minimizes
the sharing of components, instead emphasizing the
decomposition of services to ensure their maximum
independence and autonomy [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. This independence is
critically important for the implementation of continuous
integration and continuous deployment (CI/CD)
methodologies, as it allows services to be developed, tested,
deployed, and scaled independently of one another, thereby
facilitating the use of optimal technology-stacks tailored to
specific requirements and functionalities [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. Additionally,
MSA simplifies decentralized management of data and
architectural decisions, enabling greater adaptability and
flexibility in selecting technologies and architectural
approaches [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ].
        </p>
        <p>
          The transition to MSA is often driven by the need to
address the limitations associated with monolithic
architectures, particularly in scalability, maintenance, and
the dynamics of developing new features [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. The
microservices approach allows organizations to scale
individual components according to demand independently,
simplifies the management of smaller codebases, and
facilitates rapid development iterations. Moreover, this
architectural model enhances resilience to system failures
by ensuring that the failure of a single service does not lead
to a system-wide outage, and it promotes organizational
adaptability by aligning service boundaries with corporate
strategic directions [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ].
        </p>
        <p>
          The implementation of MSA is a complex process that
involves analyzing the existing system, strategic
transformation, implementing the new paradigm, and
continuous management, support, and adaptation. This
process not only reflects the need to revise development and
management practices to align with MSA’s decentralized
and distributed nature but also highlights the necessity of
addressing specific challenges. These challenges include
network latency, data consistency, service orchestration,
service integration, data management in a decentralized
environment, comprehensive security measures, and
developing and deploying productive monitoring and
logging systems [
          <xref ref-type="bibr" rid="ref2 ref5 ref6">2, 5, 6</xref>
          ].
        </p>
        <p>
          Empirical studies of the successful application of MSA
by well-known companies such as Netflix, Amazon, and
Uber illustrate the significant potential of this architecture
in ensuring a prominent level of flexibility, scalability, and
resilience in software development processes [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
Implementing MSA and realizing its benefits requires
organizations to understand its key principles and
effectively manage the challenges associated with this
approach.
        </p>
      </sec>
      <sec id="sec-1-2">
        <title>1.2. Importance of security in microservices</title>
        <p>Implementing robust security in microservices systems is
critically important due to the critical role these systems
play in modern application architectures. As companies
increasingly rely on microservices for scalability and
performance, ensuring their security is essential for
maintaining trust, protecting sensitive data, and ensuring
uninterrupted operations.</p>
        <p>Microservices-based systems manage substantial
volumes of sensitive and personal data. Safeguarding this
information is paramount to mitigate breaches that could
result in financial losses, legal ramifications, and
reputational harm to the organization. A secure
microservices architecture protects customer data,
corporate intellectual property, and mission-critical data
from unauthorized access and exploitation.</p>
        <p>Secure microservices systems are also crucial for
maintaining application reliability and availability. Security
incidents, such as unauthorized access or denial-of-service
attacks, can disrupt service operations, leading to downtime
and degraded performance.</p>
        <p>
          Compliance with regulatory requirements is another
important reason for ensuring robust security in
microservices systems. Many industries are subject to
regulations that mandate data protection and specific
security measures [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. Failure to comply with these
requirements can result in severe fines and loss of business.
Prioritizing security enables organizations to meet
regulatory demands and avoid associated risks [
          <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
          ].
        </p>
        <p>Security in microservices systems also preserves
customer trust and confidence. Customers expect
businesses to protect their information in an era of frequent
data breaches and cyberattacks. Demonstrating a
commitment to security enhances an organization’s
reputation, fosters customer loyalty, and provides
competitive advantages.</p>
      </sec>
      <sec id="sec-1-3">
        <title>1.3. Research purpose</title>
        <p>This research aims to analyze the primary security
challenges that arise during the implementation of MSA and
review practices and strategies designed to address these
challenges. The findings will serve as a foundation for
developing recommendations that enhance the security of
microservices systems, thereby ensuring the integrity,
confidentiality, and availability of applications within a
distributed architecture.</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>2. Security challenges in MSA</title>
      <p>MSA offers numerous advantages, such as scalability,
flexibility, and the autonomous deployment of services.
However, these benefits are accompanied by significant
security challenges that must be addressed to maintain the
system’s integrity and confidentiality.</p>
      <p>
        The transition to MSA provides enhanced scalability
and maintainability, but it also significantly increases the
attack surface compared to traditional monolithic systems.
MSA consists of numerous independently deployed
services, each functioning as a separate network endpoint,
which increases the potential entry points for malicious
actors [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. This distributed nature necessitates carefully
protecting each service, as a breach in one could
compromise the entire system [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>
        As microservices scale horizontally, the attack surface
expands proportionally as each service deployment
introduces new network ports and application programming
interfaces (APIs) [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. This complicates the maintenance of
uniform security standards, as different microservices may
utilize various dependencies, libraries, and frameworks, each
with vulnerabilities.
      </p>
      <p>Frequent updates and deployments, which are
characteristic of microservices, further exacerbate these
security challenges by providing malicious actors with more
opportunities to exploit unpatched vulnerabilities or
misconfigurations.</p>
      <p>
        Unlike monolithic applications, where components
interact within a single process, microservices interact over
a network, exposing the system to risks such as
interception, spoofing, and unauthorized access [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Each
interaction becomes a potential attack vector, necessitating
careful consideration of security issues.
      </p>
      <p>
        The complexity is further heightened by the diversity of
communication protocols and schemes, such as synchronous
messaging, asynchronous message queues, and event-driven
mechanisms [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Each method has vulnerabilities, making it
challenging to ensure consistent security across all service
interactions.
      </p>
      <p>Additionally, the MSA’s dynamic nature intensifies
security concerns. Services are often deployed, scaled, and
terminated on demand, leading to constant changes in
network topology. This makes it challenging to maintain
secure communication channels and authenticate services
effectively.</p>
      <p>
        The distributed structure of microservices complicates
security, particularly regarding data management and
protection. Ensuring consistent data security across various
services is challenging, as data is stored in multiple
databases, caches, and storage systems [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. This
necessitates robust protection strategies, including
encryption, access control, and continuous monitoring to
detect breaches [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>One of the primary challenges is ensuring that each
microservice has the appropriate data access level.
Microservices performing specific business functions may
require separate datasets. It is critically important to ensure
that only authorized services have access to and can modify
data. Additionally, compliance with data privacy
regulations demands strict control over data processing and
storage.</p>
      <p>
        Cloud environments exacerbate privacy concerns, as
cloud technology consumers are increasingly worried about
the potential misuse or compromise of stored information
[
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>It is important to note that regulations such as GDPR,
HIPAA, and CCPA establish stringent data protection
standards, including encryption, auditing, providing users
with the right to access and manage their data, and other
measures. Compliance with these regulations requires
implementing comprehensive security systems that account
for the diversity of technologies and frameworks used in
microservices.</p>
      <p>
        Another challenge in MSA is ensuring the authenticity
of each service involved in communication. If one service is
compromised, it can affect other services, leading to
potential application misuse [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. To mitigate this risk,
microservices applications must implement robust
authentication mechanisms that allow interaction only
between authenticated services [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
      </p>
      <p>
        Authorization in microservices systems also presents
unique challenges due to the need for granular access
control. Unlike monolithic architectures, where access
control is typically centralized, microservices require
distributed authorization mechanisms to manage
permissions across various services properly [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. This
makes it challenging to ensure consistent authorization
policies, especially in environments where services are
frequently scaled. Additionally, each service must be
granted only the minimum necessary privileges to perform
its functions, limiting potential damage from a
compromised service [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Excessive privilege allocation
can lead to significant security risks, as attackers may
exploit these excessive permissions to escalate their access
and cause further harm.
      </p>
      <p>
        Additionally, the heterogeneity of microservices environments,
often involving multi-cloud deployments, complicates
authentication and authorization management. Using diverse
technologies and platforms requires a centralized yet flexible
approach to security management to maintain consistent
security policies across all services [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. However, achieving
such centralization without creating a single point of failure or
a performance bottleneck remains a significant challenge.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Best practices for microservice</title>
      <p>security</p>
      <sec id="sec-3-1">
        <title>3.1. Libertinus fonts for Linux</title>
        <p>In the realm of MSA, service isolation is a fundamental
aspect that must be considered to ensure robust security
practices. Service isolation involves designing each
microservice as an autonomous and isolated unit capable of
functioning independently from others. The primary goal of
service isolation is to contain potential security breaches
within individual services, preventing the compromise of
one component from affecting the entire system. Through
careful isolation, each service is granted only the minimal
resources and permissions necessary for its operation,
significantly reducing the attack surface and the potential
impact of security incidents.</p>
        <p>Sandboxing is a service isolation technique that creates
a controlled environment for executing programs by
restricting their access to system resources. This technique
can be successfully implemented through virtualization and
containerization, which allow processes to be isolated,
ensuring an important level of security and system stability.</p>
        <p>
          Virtualization creates isolated environments through
Virtual Machines (VMs), each with its own operating system
and software (Fig. 2). Hypervisors such as Xen, VMware,
and KVM manage multiple VMs, ensuring their independent
and secure operation [
          <xref ref-type="bibr" rid="ref20 ref21">20, 21</xref>
          ]. Virtualization is particularly
relevant in scenarios requiring complete isolation, such as
multi-tenant cloud environments [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ].
This technology allows consolidating multiple operating
systems on a single physical server, optimizing hardware
utilization and reducing infrastructure costs. Each VM
operates independently, protecting against security
breaches or resource conflicts [
          <xref ref-type="bibr" rid="ref20 ref21">20, 21</xref>
          ]. This reduces the risk
of an attacker’s lateral movement between services.
        </p>
        <p>
          The “Service per VM” approach [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] involves
associating each microservice with a separate VM. This
approach ensures isolation, as issues or threats in one
service do not affect others. The primary advantages include
ease of managing dependencies, enhanced security through
isolation, and the ability to use different operating systems
and software for different services. However, there are
drawbacks: resource costs can be high due to the need to
allocate separate VMs for each service, and scaling may
become challenging due to the limitations on the number of
VMs that can be hosted on a single physical server.
        </p>
        <p>
          Containerization is an evolution of virtualization that
provides a lightweight and convenient way to isolate services.
Containers encapsulate an application and its dependencies
into a single portable unit that can run consistently across
different environments (Fig. 3) [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. This is achieved through
container engines like Docker, which use operating
systemlevel virtualization to isolate applications within namespaces
and groups. Such isolation prevents processes in different
containers from interacting, enhancing security by containing
potential vulnerabilities within a single container [
          <xref ref-type="bibr" rid="ref20 ref23">20, 23</xref>
          ].
The “Service per container” deployment model [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] allows
each microservice to run in its container. The primary
advantages include ease of deployment and scaling, efficient
resource utilization, and rapid startup and shutdown of
containers. However, containerization also has its
drawbacks: it offers less isolation than VMs, can present
challenges in managing dependencies and network
configurations, and requires orchestration tools to manage
many containers.
        </p>
        <p>
          Coordinated management of containers and their
orchestration provides additional capabilities for ensuring the
security of a containerized environment. Tools such as
Kubernetes and Docker Swarm offer features that include
resource constraint management, scheduling, load balancing,
health checks, fault tolerance, and automatic scaling [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ].
Kubernetes allows setting CPU and memory usage limits for
each container, preventing resource exhaustion. Health check
and fault tolerance mechanisms automatically detect and
replace compromised containers, maintaining overall system
security and availability [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]. Orchestration tools also support
automatic deployment and scaling, which are vital for
DevOps, and enforce security and compliance policies. For
instance, Kubernetes can control network traffic between
containers, allowing only authorized communication paths,
thereby protecting sensitive data and preventing
unauthorized access.
        </p>
        <p>
          Resource isolation is a crucial aspect of both
containerization and virtualization. Containers are used to
manage and limit the resources available to each container,
such as CPU and memory [
          <xref ref-type="bibr" rid="ref20 ref21">20, 21</xref>
          ]. Virtualization similarly
abstracts hardware resources into multiple VMs, each with
dedicated resources. This ensures that each VM operates
independently without resource conflicts with other VMs
on the same physical machine.
        </p>
        <p>Such isolation of containers and VMs allows for the
efficient allocation and scaling of resources, supporting the
stability of critical services and reducing the risk of failures
and attacks aimed at resource exhaustion.</p>
        <p>
          Combining containerization and virtualization can
provide a high level of security and system flexibility (Fig.
4). For example, running containers within VM combines
the advantages of both technologies: optimal resource
utilization and rapid container startup, along with the
robust isolation and security guarantees provided by VM
[
          <xref ref-type="bibr" rid="ref21 ref23">21, 23</xref>
          ]. This multi-layered approach offers additional
protection: even if a container is compromised, the
virtualization layer creates an extra security boundary,
safeguarding the hardware and other VMs from potential
threats [
          <xref ref-type="bibr" rid="ref13 ref21">13, 21</xref>
          ].
Micro-segmentation is an innovative security strategy
designed to enhance the protection of microservices
architecture. It involves dividing the network infrastructure
into smaller, manageable segments, allowing security
policies to be applied directly where the resources reside
(Fig. 5). This differs from traditional network segmentation
methods, such as VLANs and firewalls, which often do not
provide sufficiently granular protection in dynamic cloud
environments [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. By implementing micro-segmentation,
organizations can ensure that only authorized entities
within the network can access specific applications or data.
This approach significantly reduces the risk of lateral
movement by potential attackers, thereby improving overall
network security [
          <xref ref-type="bibr" rid="ref25 ref25">25, 25</xref>
          ].
The use of micro-segmentation to secure microservices
offers several significant advantages. First, this approach
enhances threat detection and prevention by restricting
communication between processes. Unauthorized access
attempts are quickly identified as early indicators of
potential intrusions. This approach aligns with the
zerotrust security model, ensuring consistent enforcement of
security policies across various infrastructures [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ].
        </p>
        <p>Furthermore, micro-segmentation supports compliance
with security standards and regulatory requirements related
to data protection and network security by ensuring proper
isolation and safeguarding of sensitive data and critical
applications.</p>
        <p>
          Micro-segmentation is particularly valuable in dynamic
environments where applications and workloads frequently
move between on-premises servers and cloud systems. It
ensures that security policies follow applications regardless
of location, maintaining robust protection against attacks
[
          <xref ref-type="bibr" rid="ref25">25</xref>
          ].
        </p>
        <p>
          Implementing micro-segmentation requires a deep
understanding of the network infrastructure and its
components. There are several approaches to
microsegmentation, including native micro-segmentation, which
leverages underlying infrastructure such as hypervisors or
operating systems; third-party models that utilize virtual
firewalls; overlay models with agent software on servers;
and hybrid models that combine multiple approaches [
          <xref ref-type="bibr" rid="ref24 ref26">24,
26</xref>
          ]. Each of these approaches has its advantages, and the
choice depends on the organization’s specific needs and
existing infrastructure.
        </p>
        <p>
          For example, native micro-segmentation provides
granular control without additional hardware, making it
ideal for virtual environments. Third-party models offer
centralized management of distributed virtual firewalls,
which is suitable for large-scale deployments [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. Overlay
models enable dynamic policy enforcement through central
controllers or orchestration devices, providing high
visibility and control over workflow communications [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ].
        </p>
        <p>
          Achieving successful micro-segmentation involves
several key steps. First, deep visibility into network
resources is essential to identify all active applications and
their dependencies. This can be accomplished using
visualization and mapping tools [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ]. Once these
dependencies are identified, logical groups of applications
can be created to implement security policies, ensuring the
optimal group size to avoid overly broad or excessively
narrow coverage [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ].
        </p>
        <p>
          The next step is the development of security policies.
These policies must be carefully detailed and tailored to
meet the specific security requirements of each application
group. Once developed, the policies are implemented and
continuously monitored to ensure compliance and proper
functioning [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ]. Monitoring involves tracking all traffic to
detect anomalies and any breaches of policies. Additionally,
enforcement mechanisms should be established to enable
swift responses to identified threats, automatically isolating
and investigating potential security incidents [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ].
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Securing data in transit</title>
        <p>Ensuring secure data transmission between microservices is
the next crucial element of the overall security strategy in
MSA. Since microservices continuously exchange data over
the network, it is essential to secure this process to protect
the system from potential threats such as data interception
or tampering. This section examines approaches to securing
communication between services, including encryption and
mutual authentication.</p>
        <p>
          Transport Layer Security (TLS) is a protocol that secures
communications between services in MSA. It operates
below the application layer, providing end-to-end
encryption at the transport level, which is crucial for
maintaining the confidentiality and integrity of data
transmitted between services [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
        </p>
        <p>
          Establishing a TLS connection begins with a
“handshake” process (Fig. 6), during which upstream and
downstream services exchange messages to agree on
encryption parameters. Initially, the upstream service sends
a “Client hello” to the downstream service, listing supported
ciphers and protocol versions. In response, the downstream
service sends a “Server hello”, where it selects the
encryption parameters and provides its certificate for
authentication. The upstream service verifies the validity
and authenticity of the downstream service’s certificate.
The upstream service proceeds with the connection
establishment if the certificate is valid. Next, key exchange
occurs. The upstream service generates a “premaster
secret”, encrypts it with the downstream service’s public
key, and then sends it. The downstream service decrypts the
“premaster secret” using its private key. Based on this value,
the upstream and downstream services generate session
keys to encrypt further communication. All data exchanged
between the upstream and downstream services is
encrypted using these symmetric session keys, ensuring the
confidentiality and integrity of the information.
Additionally, a message authentication code (MAC) is added
before data transmission to verify the integrity of the
information and protect it from tampering.
TLS protects microservices from various security threats,
including man-in-the-middle (MITM) attacks. In such
attacks, an attacker intercepts communication between two
endpoints to eavesdrop on or alter the transmitted data.
Implementing TLS significantly reduces the risk of these
attacks, as the encryption provided by TLS makes it difficult
for attackers to decrypt intercepted data [
          <xref ref-type="bibr" rid="ref12 ref27">12, 27</xref>
          ].
        </p>
        <p>The integration of TLS in MSA is typically implemented
through HTTPS, which incorporates TLS encryption to
secure HTTP communications.</p>
        <p>
          Another important aspect is the termination of TLS
connections. When using a proxy server, it is essential to
understand that TLS protection is point-to-point, meaning
the security provided by TLS ends at the proxy server. This
requires establishing a new TLS connection between the
proxy server and the microservice. This process, known as
TLS bridging, can expose data to potential risks if the proxy
server is compromised. An alternative approach is TLS
tunneling, where a secure tunnel is established directly
between microservices, ensuring the data remains
encrypted and inaccessible to intermediary servers. TLS
tunneling provides an additional layer of security by
protecting the data throughout its journey from one
microservice to another [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ]. A schematic illustration
showing the difference between TLS bridging and TLS
tunneling is presented in Fig. 7.
Mutual Transport Layer Security (mTLS), unlike one-way
TLS, where authentication is verified only by the upstream
service, ensures mutual authentication of both parties,
guaranteeing that both the upstream and downstream
services verify each other’s authenticity [
          <xref ref-type="bibr" rid="ref12 ref28">12, 28</xref>
          ]. The
procedure begins with the downstream service providing its
certificate to the upstream service, verifying its validity and
authenticity. Upon successful verification, the upstream
service provides its certificate for similar validation by the
downstream service. These additional steps in the
handshake process are illustrated in Fig. 8. Communication
can proceed only after both parties’ certificates have been
authenticated. This two-way authentication is particularly
valuable in environments where services are distributed
across different cloud infrastructures or on-premises data
centers [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ], mainly when communication occurs over
potentially insecure networks, as is standard in hybrid or
multi-cloud models.
        </p>
        <p>
          TLS is inherently designed to protect against MITM
attacks by securing communication channels through
encryption and ensuring data integrity between services.
However, mTLS enhances security by providing additional
protection against threats targeted by TLS and attacks such as
IP spoofing, where attackers attempt to impersonate trusted
entities, and denial-of-service attacks aimed at disrupting
service availability [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ].
        </p>
        <p>Additionally, compliance with industry standards and
regulations, such as GDPR, PCI DSS, HIPAA, and others,
often mandates using mTLS to secure data in transit,
highlighting the critical importance of this protocol in
protecting clients’ sensitive information.</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Service mesh</title>
        <p>An additional method for enhancing the security of
communication between services in MSA is implementing a
service mesh—a specialized infrastructure layer that
manages and secures communication between
microservices. A service mesh allows for centralized
management of security policies, traffic monitoring, and
other critical aspects of service interactions, significantly
improving the system’s overall security.</p>
        <p>The architecture of a service mesh consists of two
primary components: the control plane and the data plane.</p>
        <p>
          The control plane is responsible for managing and
configuring the mesh’s operation, including implementing
security policies and distributing configuration data to the
data plane [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ]. At this level, it handles certificate
management, service discovery, telemetry data aggregation,
and more [
          <xref ref-type="bibr" rid="ref31 ref32">31, 32</xref>
          ].
        </p>
        <p>
          The data plane, in turn, is composed of sidecar proxies
deployed alongside each microservice. These proxies
intercept all incoming and outgoing traffic, enforce security
policies, and ensure secure communications. This
mechanism guarantees consistent communication
management between microservices, regardless of the
programming languages or frameworks being used [
          <xref ref-type="bibr" rid="ref33">33</xref>
          ].
        </p>
        <p>Fig. 9 shows a schematic representation of the service
mesh architecture, including the control plane and data
plane components.</p>
        <p>
          A service mesh separates the communication layer from
the application’s business logic, allowing for centralized
management of security measures during interactions
between services.
One critical function of a service mesh for ensuring secure
communication is the use of mTLS. This is achieved by
automatically issuing and managing short-term certificates for
each service, which secure the connections [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ]. The control
plane automates the distribution and renewal of these
certificates, maintaining a high level of security without
requiring developers’ manual intervention [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ].
        </p>
        <p>
          Additionally, a service mesh supports fine-grained
authorization policies, which define which services can
interact with each other and under what conditions, adding
an extra layer of security [
          <xref ref-type="bibr" rid="ref33">33</xref>
          ]. This functionality is essential
in large-scale deployments, where microservices may have
varying levels of sensitivity and access requirements [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ].
        </p>
        <p>Traffic management in a service mesh creates a
controlled environment for deploying and testing new
service versions. With advanced capabilities such as traffic
splitting, request mirroring, and canary deployments, a
service mesh allows organizations to gradually roll out
updates with minimal impact on the production
environment. This approach enables the rapid detection and
resolution of potential vulnerabilities before they can affect
the entire system, significantly reducing the risk of security
breaches due to new or insufficiently tested code.</p>
        <p>
          The traffic splitting technology enables the convenient
distribution of incoming requests between different versions of
a service, facilitating controlled and gradual deployment of
updates. This, in turn, minimizes the impact of changes and
reduces the risk of introducing errors into the production
environment [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ].
        </p>
        <p>
          Request mirroring allows developers to duplicate traffic
to a test or monitoring service without affecting the main
request flow. This feature is precious for analyzing service
behavior under actual traffic conditions, enabling the early
detection of potential issues [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ].
        </p>
        <p>
          Canary deployments add another layer of safety during
testing by directing a limited portion of traffic to the
updated service version. At the same time, the majority of
users continue to interact with the stable version [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ].
        </p>
        <p>
          Service meshes provide capabilities for collecting and
analyzing key metrics such as latency, error rates, and
resource usage, contributing to a comprehensive system
performance assessment [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ]. Distributed tracing serves as
a tool for optimizing MSA by enabling the tracking of the
complete execution path of requests across numerous
services. This allows for identifying bottlenecks in the
system’s operation and provides valuable insights for
further optimization [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ].
        </p>
        <p>
          Service meshes also enable centralized logging from all
microservices, consolidating them into a unified monitoring
system. This simplifies the diagnostic process, facilitating
the rapid detection of errors and precise tracking of the
sequence of events leading to failures [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ].
        </p>
        <p>
          Advanced observability and monitoring capabilities are
crucial for enhancing system security and stability. For
instance, using telemetry data for dynamic system analysis
enables administrators to detect anomalous events,
architectural flaws, and performance issues in real-time,
which is vital for the security and reliability of distributed
systems [
          <xref ref-type="bibr" rid="ref35">35</xref>
          ].
        </p>
      </sec>
      <sec id="sec-3-4">
        <title>3.4. Access control mechanisms</title>
        <p>In the context of MSA, access control mechanisms are
fundamental to ensuring the appropriate level of system
security. They govern who can access resources and how
within a distributed architecture. Due to the autonomous
operation of each microservice, consistent and reliable
authorization and authentication procedures are needed.
This ensures the secure protection of sensitive information
and reduces the risks of unauthorized access, which is
critical for maintaining the integrity and security of the
entire system.</p>
        <p>
          OAuth 2.0 is a robust and widely recognized
authorization framework that is particularly well-suited for
ensuring security in the context of MSA. Originally designed
to allow users to grant third-party applications limited access
to their resources without exposing their credentials, OAuth
2.0 has evolved into the de facto standard for managing access
in distributed systems [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. In MSA, where decentralization is
a crucial aspect, the ability of OAuth 2.0 to delegate
authorization functions to a central server is precious. This
delegation ensures that individual microservices do not need
to manage user credentials directly, reducing the risk of
security breaches and simplifying operational processes [
          <xref ref-type="bibr" rid="ref36">36</xref>
          ].
        </p>
        <p>
          The OAuth 2.0 framework involves several key
components, each performing a specific function in the
authorization process: the resource owner, the client, the
authorization server, and the server. The resource owner is
typically the user with the right to grant access to their
resources. The client is the application that requests access
to these resources on behalf of the user. The authorization
server authenticates the user and issues access tokens to the
client. The resource server stores the protected resources
and uses the issued access tokens to verify access rights and
make decisions about granting access [
          <xref ref-type="bibr" rid="ref37 ref38">37, 38</xref>
          ].
        </p>
        <p>OAuth 2.0 offers a range of authorization flows, each
designed to meet applications’ specific needs and provide an
appropriate level of security. Understanding the principles
and conditions for applying each flow is crucial for ensuring
robust protection and optimal system performance.</p>
        <p>
          The Authorization Code Grant (Fig. 10) is the most
common method, particularly well-suited for web and
mobile applications that securely manage client secrets. The
process begins with the user (resource owner) granting
access to the application and being redirected to the
authorization server. After successful authentication and
granting the necessary permissions, the authorization
server issues an authorization code. This code is then used
to obtain an access token, allowing the application to access
resources on the server. This method is highly secure
because the exchange of client credentials and the
authorization code occurs over secure channels,
significantly reducing the risk of data interception [
          <xref ref-type="bibr" rid="ref36 ref38">36, 38</xref>
          ].
        </p>
        <p>
          The Implicit Grant (Fig. 11) is primarily used in
singlepage applications (SPAs) or client-side applications that
cannot securely store client secrets. After the user is
authenticated and grants the necessary permissions, the
authorization server directly issues an access token to the
client, which is passed through a URL redirect [
          <xref ref-type="bibr" rid="ref36 ref39">36, 39</xref>
          ].
Despite the simplicity of this method, its security is limited
due to the token being transmitted in plain text via the URL,
which restricts its use to applications with lower security
requirements.
The Resource Owner Password Credentials Grant (Fig. 12)
involves the user directly providing their credentials, such
as a username and password, to the application, which then
sends them to the authorization server to obtain an access
token. This approach is considered outdated and less secure
because the user’s credentials could be compromised. As a
result, it is typically used only in situations where the
application is highly trusted and the risk of information
leakage is minimal [
          <xref ref-type="bibr" rid="ref38 ref39">38, 39</xref>
          ].
The Client Credentials Grant (Fig. 13) is designed to
facilitate secure data exchange between services without
user involvement. In this method, the application uses its
client ID and secret key to authenticate with the
authorization server and obtain an access token. This
approach is particularly suitable for backend services or
APIs that require secure communication without user
interaction [
          <xref ref-type="bibr" rid="ref38 ref39">38, 39</xref>
          ].
        </p>
        <p>
          In OAuth 2.0, access tokens play a significant role,
representing the permissions granted by the resource
owner. These tokens are designed explicitly with a short
lifespan to minimize the risk of misuse in case they are
stolen [
          <xref ref-type="bibr" rid="ref40">40</xref>
          ]. To ensure continuous and convenient user
access without repeated authentication, OAuth 2.0 supports
using refresh tokens. These long-lived tokens allow the
client to obtain new access tokens as needed, providing
uninterrupted access while maintaining short access token
lifespans to enhance security [
          <xref ref-type="bibr" rid="ref38 ref40">38, 40</xref>
          ]. Secure storage and
transmission of refresh tokens are critically important due
to their extended lifespan, making it essential to prevent
unauthorized access.
        </p>
        <p>
          Access and refresh tokens are often implemented in
JSON Web Tokens (JWT) format. The JWT format is
compact and self-contained, directly containing all the
necessary information within the token [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ]. JWTs are
digitally signed, which ensures their integrity and
authenticity, providing robust protection against tampering
or unauthorized access. This feature is a critical aspect of
security, ensuring access and refresh tokens are protected
throughout their lifecycle [
          <xref ref-type="bibr" rid="ref40">40</xref>
          ].
        </p>
        <p>OAuth 2.0 offers several advantages that align well with
the requirements of MSA.</p>
        <p>
          The first advantage is OAuth 2.0’s ability to scale across
multiple services, providing a unified and standardized
authorization mechanism that simplifies management as the
system grows [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ]. This scalability is crucial in
microservices, where new services are frequently added,
and the complexity of managing access control increases
accordingly.
        </p>
        <p>
          Additionally, using JWT in OAuth 2.0 reduces latency
and complexity by allowing each service to independently
verify tokens without contacting the authorization server.
In centralized authorization models, services must
communicate with a central authorization server to validate
tokens, which can introduce delays and create bottlenecks.
With JWT, all the necessary information for authorization
is embedded within the token, enabling services to verify it
locally using the authorization server’s public key. This
decentralized verification enhances performance and
scalability, making it ideal for MSA, where services are
designed to operate autonomously [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ].
Another key advantage is the separation of authentication
from application logic. OAuth 2.0 allows microservices to
delegate the authentication process to the authorization
server, which can then issue tokens used for authorization
across all services [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ]. This separation of concerns means
developers can focus on building service-specific
functionality without worrying about implementing
complex authentication and authorization logic. It also
simplifies the updating and managing of security policies
from a central point, ensuring their consistent application
throughout the system [
          <xref ref-type="bibr" rid="ref36">36</xref>
          ].
        </p>
        <p>Additionally, OAuth 2.0 supports flexible access
management through “scopes”, which define the level of
access granted to a client. “scopes” allow for fine-tuning
which resources can be accessed and what operations can
be performed, which is particularly useful in microservices,
where different services may have varying access and
security requirements.</p>
        <p>Implementing OAuth 2.0 in MSA requires strict
adherence to several vital practices to ensure security and
proper system functionality.</p>
        <p>
          One critical practice is the regular rotation of secrets used
to sign tokens. This strategy significantly reduces the risk of
token forgery in case a secret is compromised. It ensures that
outdated tokens cannot be reused, which is crucial for
maintaining the integrity of the system [
          <xref ref-type="bibr" rid="ref40">40</xref>
          ].
        </p>
        <p>
          Another practical approach is setting a short lifespan for
access tokens. Limiting the duration of these tokens
significantly reduces the likelihood that an attacker can exploit
a stolen token. Using short-lived tokens in combination with
refresh tokens achieves a balance between enhanced security
and user convenience [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ].
        </p>
        <p>
          Access tokens require strict protection to prevent
unauthorized access and misuse. To safeguard these tokens
from interception by malicious actors, it is crucial to transmit
them only over secure channels, such as HTTPS [
          <xref ref-type="bibr" rid="ref40">40</xref>
          ].
        </p>
        <p>
          Monitoring token activity further enhances security.
Implementing systems that can detect unusual token activity,
such as repeated failed token validations or token usage from
unexpected locations, allows for the rapid identification and
response to potential security breaches [
          <xref ref-type="bibr" rid="ref38">38</xref>
          ].
        </p>
        <p>
          OAuth 2.0’s reliance on a centralized authorization
server introduces the risk of creating a single point of
failure. If the authorization server experiences downtime or
becomes unavailable, it can significantly disrupt the
system’s ability to perform authorization operations. To
mitigate this risk, it is crucial to implement redundancy and
failover mechanisms for the authorization server [
          <xref ref-type="bibr" rid="ref38">38</xref>
          ].
Additionally, employing load-balancing strategies can
evenly distribute traffic across multiple instances of the
authorization server, ensuring that no single instance
becomes a bottleneck or point of failure.
        </p>
        <p>
          Finally, integrating OAuth 2.0 with additional access
control mechanisms, such as role-based access control
(RBAC) or attribute-based access control (ABAC),
significantly strengthens the security architecture of
microservices. For instance, RBAC can assign specific roles
and permissions within individual microservices, while
OAuth 2.0 ensures that these permissions are consistently
enforced across the entire system [
          <xref ref-type="bibr" rid="ref27 ref40">27, 40</xref>
          ]. This integration
creates a cohesive security system aligning with the
organization’s policies.
        </p>
        <p>
          OpenID Connect (OIDC) is an identity layer built on top
of the OAuth 2.0 protocol, providing a standardized solution
for simplifying user authentication across numerous
services and applications. While OAuth 2.0 primarily
handles authorization by allowing third-party clients to
access resources on behalf of a user, OIDC extends this
model by incorporating authentication capabilities. This
ensures reliable verification of user identities and facilitates
seamless integration of authentication processes into
modern digital ecosystems [
          <xref ref-type="bibr" rid="ref19 ref32">19, 32</xref>
          ].
        </p>
        <p>
          OIDC achieves its goals by leveraging familiar OAuth
2.0 authorization methods, such as the Authorization Code
Grant, to obtain additional identity information through ID
tokens. These ID tokens, typically represented in the JWT
format, contain critical data about the authenticated user.
They often include user identification details, information
about the authentication events, and other attributes such
as the user’s email address or profile information [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ].
        </p>
        <p>
          The user authentication process using OIDC begins
with redirecting the user to an OpenID Provider (OP), an
OAuth 2.0 authorization server enhanced with OIDC
support. After successful identification, the OP issues an ID
token and a standard access token. The client application
and services can use the ID token to verify the user’s
identity, access specific fields of its profile, and, if necessary,
retrieve additional information from the UserInfo endpoint
provided by the OP [
          <xref ref-type="bibr" rid="ref36">36</xref>
          ].
        </p>
      </sec>
      <sec id="sec-3-5">
        <title>3.5. API gateway</title>
        <p>
          The API gateway is a component in MSA that serves as a
single entry point for all client requests directed toward
microservices. This architectural concept is designed to
optimize the interaction of various types of clients with
microservices by providing proper management and
routing of requests while simultaneously hiding the
complexity of the internal system from the client [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ]. As a
central hub, the API gateway simplifies client interactions
with different services. Instead of clients sending multiple
requests to various services, the API gateway allows them
to combine these into a single request, which is then
processed and routed to the appropriate services [
          <xref ref-type="bibr" rid="ref41">41</xref>
          ].
        </p>
        <p>
          In addition to its role in traffic management, the API
gateway enhances microservices’ security. This technology
centralizes critical security functions such as
authentication, authorization, and traffic validation
(Fig. 14), essential for protecting microservices from
unauthorized access and potential threats [
          <xref ref-type="bibr" rid="ref42">42</xref>
          ]. By
centralizing security operations, the API gateway ensures
consistent enforcement of security policies across all
microservices, reducing the risk of vulnerabilities arising
from inconsistencies in security implementation at the
individual microservice level [
          <xref ref-type="bibr" rid="ref38">38</xref>
          ].
Centralizing authentication and authorization within the
API gateway is a crucial security strategy in MSA. This
approach significantly reduces the risk of security breaches
by ensuring each request is authenticated and authorized
before it reaches the internal services [
          <xref ref-type="bibr" rid="ref37">37</xref>
          ].
        </p>
        <p>
          One of the most practical methods for managing
authentication and authorization in an API gateway is
implementing the OAuth 2.0 protocol. In this process, the
API gateway acts as a client within the OAuth 2.0
framework, interacting with the authorization server to
authenticate requests and obtain access tokens. The API
gateway then validates these tokens before forwarding the
request to the appropriate microservice, ensuring that only
authorized requests are processed [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ].
        </p>
        <p>
          Ensuring edge security in MSA is crucial for protecting
the external perimeter where interactions between external
clients and internal services occur. The API gateway plays a
vital role in this process by acting as the security layer for
all north-south traffic, which refers to the data exchange
between external clients and internal microservices [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ].
        </p>
        <p>
          The first function that an API gateway can perform is
TLS termination. This process involves decrypting
incoming TLS traffic at the API gateway level before passing
it to the microservices. Handling decryption at the API
gateway reduces the computational load associated with
TLS decryption for individual microservices [
          <xref ref-type="bibr" rid="ref41">41</xref>
          ]. The API
gateway can also inspect the traffic for potential threats,
ensuring that only secure information passes through the
system [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ]. TLS termination also simplifies certificate and
encryption management by centralizing these tasks at the
API gateway level rather than distributing them across
multiple services.
        </p>
        <p>
          In addition to TLS termination, an API gateway can
implement rate-limiting and throttling mechanisms to
protect against denial-of-service attacks and other forms of
abuse. These mechanisms limit the number of requests that
can be made within a specific time frame, preventing the
system from being overwhelmed by excessive traffic from
any single client [
          <xref ref-type="bibr" rid="ref36 ref43">36, 43</xref>
          ]. Rate limiting enhances security
and helps maintain the performance and availability of
services, ensuring that malicious or overly demanding
clients do not exhaust resources.
        </p>
        <p>
          An API gateway can also implement signature-based
protection, which helps identify and block requests that
match known attack patterns [
          <xref ref-type="bibr" rid="ref43">43</xref>
          ]. By recognizing and
responding to these patterns, the API gateway adds a critical
layer of defense, intercepting potentially malicious traffic
before it can reach the backend microservices.
        </p>
        <p>
          Furthermore, the API gateway is key in isolating
internal services from external client applications. By acting
as an intermediary, the API gateway ensures that external
clients do not interact directly with the microservices,
significantly reducing the attack surface and limiting
potential threats to access to internal services [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
The API gateway is a powerful tool for managing and
securing MSA, but it also introduces several challenges that
organizations must consider to ensure a reliable and scalable
system. One of the most significant risks associated with
using an API gateway is its potential to become a single
point of failure. If the API gateway fails, it can disrupt access
to all microservices, effectively leading to a complete system
outage [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. Strategies such as horizontal scaling and
redundancy should be implemented to minimize this risk.
Deploying multiple instances of the API gateway across
different geographic locations ensures service continuity in
case one instance fails. Using load balancing to distribute
incoming requests among these instances evenly can
enhance system reliability and prevent bottlenecks [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ].
        </p>
        <p>
          It is important to note that while the API gateway
provides essential security functions, it is not a universal
solution for all threats. Organizations should implement
additional protective measures at the microservice level,
such as fine-grained access controls, detailed logging, and
anomaly detection systems to enhance security. Moreover,
adopting a defense-in-depth strategy, where security is
enforced at multiple levels of the architecture, can offer
more comprehensive protection against sophisticated
attacks [
          <xref ref-type="bibr" rid="ref44">44</xref>
          ]. This multi-layered approach increases the
likelihood that other security mechanisms can detect and
respond to the threat even if the API gateway is bypassed.
        </p>
      </sec>
      <sec id="sec-3-6">
        <title>3.6. Securing data at rest</title>
        <p>Data at rest refers to information stored on any physical or
digital medium, such as databases, files, backup systems,
and other storage solutions. In the context of MSA,
protecting such data becomes more challenging due to the
distributed nature of the system and the placement of data
across various services and storage locations. MSA
developers need to implement a comprehensive security
strategy to ensure the confidentiality of data at rest and
protect it from unauthorized access, breaches, and other
threats. This strategy may include data encryption, strict
access controls, data masking, immutable storage,
tokenization, and other practices.</p>
        <p>
          Data encryption is a crucial technique for protecting
information at rest. This technique transforms data into an
unreadable format using encryption algorithms, such as
Advanced Encryption Standard (AES) for large volumes of
data and Rivest-Shamir-Adleman (RSA) for secure key
exchange [
          <xref ref-type="bibr" rid="ref45">45, 46</xref>
          ]. These methods are essential for
complying with regulations like GDPR, HIPAA, and PCI
DSS and should be a mandatory element of an
organization’s security protocols. Cloud service providers
also support encryption, offering automated solutions that
simplify this process and ensure data security regardless of
volume or processing speed [
          <xref ref-type="bibr" rid="ref45">45</xref>
          ]. Additionally, disk-level
encryption can be implemented at the operating system
level, such as dm-crypt in Linux, which provides encryption
and decryption of data as it is written to or read from
storage devices [47].
        </p>
        <p>
          Access controls provide an additional layer of
protection for data at rest. Implementing RBAC and ABAC
restricts access to data only to authorized users based on
their roles within the organization or specific attributes.
Only individuals with the necessary permissions can access
sensitive information [
          <xref ref-type="bibr" rid="ref45">45, 48</xref>
          ]. Such an approach is crucial
in maintaining the confidentiality and integrity of data,
especially in distributed environments where data is
accessible to multiple users and systems.
        </p>
        <p>
          Data masking protects sensitive information in MSA,
particularly in non-production environments such as
development and testing. This method permanently
replaces actual data with fictitious but plausible values,
protecting sensitive information outside secure production
environments. The importance of this approach lies in its
ability to maintain the functionality of the data while
reducing the risk of unauthorized access or data breaches.
This is particularly relevant when data is used for testing,
analytics, or similar tasks [
          <xref ref-type="bibr" rid="ref45">45, 46</xref>
          ]. For example, a credit card
number might be replaced with a similar string of characters
that mimics the original data format but has no real value.
        </p>
        <p>
          Immutable storage involves systems where
oncewritten data cannot be altered or deleted. This approach
allows organizations to protect their systems from threats
such as ransomware, unauthorized changes, and accidental
deletions [
          <xref ref-type="bibr" rid="ref45">45</xref>
          ].
        </p>
        <p>Implementing immutable storage can include using
write-once-read-many (WORM) mode or blockchain
technology to create an unalterable record of transactions.
These methods ensure that the data remains unchanged
even in the event of malicious access. Additionally,
immutable storage aids organizations in meeting regulatory
requirements for data preservation and integrity, providing
a reliable way to prove that data has not been altered since
it was initially stored [48].</p>
        <p>
          Tokenization is another method of protecting sensitive
data in microservices, which involves replacing confidential
information with non-sensitive equivalents (tokens) that
hold no intrinsic value for attackers [
          <xref ref-type="bibr" rid="ref45">45</xref>
          ]. The original data
is stored securely, and only those with access to the
tokenization system can map the tokens back to the original
information. Unlike data masking, tokenization is suitable
for use in production environments, where maintaining the
integrity and security of sensitive data is critical.
        </p>
        <p>
          Secure storage, regular rotation, and controlled access to
cryptographic keys are critical elements of data protection [
          <xref ref-type="bibr" rid="ref32 ref45">32,
45</xref>
          ]. Using dedicated key vaults or specialized hardware helps
prevent key compromise along with the data. Tools like Vault
from HashiCorp provide robust key management, granting
access only to authorized services [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ].
        </p>
        <p>Monitoring and auditing play a significant role in
detecting and responding to security incidents related to
stored data. Continuous monitoring of storage system
activity and access log analysis enables quick identification
of unauthorized access attempts [48].</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Conclusions</title>
      <p>This study comprehensively analyzed the challenges and
specific practices associated with ensuring security in MSA.
This modern architectural approach offers significant
advantages in scalability, flexibility, and the autonomy of
service development and deployment. It was found that the
implementation and transition to MSA are accompanied by
substantial security risks that require careful management
to maintain the integrity and confidentiality of distributed
systems.</p>
      <p>One of the primary challenges identified in this study is the
expanded attack surface inherent in MSA. The presence of
numerous independent services, each functioning as a
separate network endpoint, significantly increases the
number of potential entry points for attackers, making
implementing robust security measures critically important.
To mitigate this risk, the study suggests using service
isolation strategies, such as virtualization using VMs,
containerization, and micro-segmentation. These strategies
allow potential threats to be contained within isolated
environments, significantly reducing the risk of attacks
spreading between services and providing more reliable
system protection. Additionally, it was found that the API
gateway plays a crucial role in this context, serving as the first
line of defense for all north-south traffic.</p>
      <p>Ensuring the security of communication between
services is another challenge addressed in this study. The
research emphasizes the necessity of securing
communication channels using TLS and mTLS protocols,
which protect against MITM attacks and ensure that only
authorized services interact with each other. A service mesh
architecture is also recommended as a robust strategy for
managing and securing service-to-service communications.
This architecture provides a specialized infrastructure layer
that simplifies the consistent application of security policies
and guarantees secure interactions between microservices.</p>
      <p>Furthermore, this study’s analysis of data management
challenges in a distributed environment highlights the
importance of encrypting data at rest and in transit to
protect against threats sufficiently. Implementing strict
access control policies like RBAC and ABAC prevents
unauthorized access. The study also emphasizes the need for
additional data protection methods for data at rest,
including data masking, immutable storage, and
tokenization. When combined with encryption and access
controls, these approaches significantly enhance data
security in distributed systems.</p>
      <p>The study suggests using the OAuth 2.0 and OpenID
Connect frameworks for authentication and authorization.
OAuth 2.0 provides a scalable solution for delegating
authorization across multiple services, while OpenID
Connect adds a layer of user authentication, simplifying
identity management in a distributed system. The API
gateway enhances these frameworks by centralizing
authentication and authorization processes, ensuring that
only authenticated users and authorized requests gain
access to microservices, thereby reducing the risk of
security breaches and simplifying policy management.</p>
      <p>In conclusion, while MSA offers significant advantages
for modern software development, it demands a carefully
coordinated security strategy. Successful implementation of
MSA involves not only the integration of cutting-edge
technologies but also the adoption of comprehensive
security practices specifically designed to address the
unique challenges associated with managing distributed
systems. As MSA continues to evolve, so do various cyber
threats, making it essential for future research to focus on
developing innovative tools and methodologies to enhance
security in these systems. This will allow organizations to
fully leverage the benefits of microservices while
minimizing risks to security and reliability.
Securing Data at Rest and In-Transit, Int. J. Comput.</p>
      <p>Eng. 5(4) (2024) 44–55. doi: 10.47941/ijce.1920.
[46] M. A. Mohammed, F. S. Abed, A Symmetric-based
Framework for Securing Cloud Data at Rest, Turk. J.
Electr. Eng. &amp; Comput. Sci. 28(1) (2020) 347–361.
doi: 10.3906/elk-1902-114.
[47] L. Daoud, H. Huen, Performance Study of
Softwarebased Encrypting Data at Rest, in: Proceedings of 37th
International Conference on Computers and Their
Applications, EasyChair, 82 (2022) 122–130.
doi: 10.29007/1j1p.
[48] H. A. Abdulghani, et al., A Study on Security and
Privacy Guidelines, Countermeasures, Threats: IoT
Data at Rest Perspective, Symmetry 11(6) (2019) 774.
doi: 10.3390/sym11060774.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <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 systems</article-title>
          ,
          <source>in: 2nd International Conference on Conflict Management in Global Information Networks</source>
          , vol.
          <volume>3530</volume>
          (
          <year>2022</year>
          )
          <fpage>102</fpage>
          -
          <lpage>111</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>X.</given-names>
            <surname>Liu</surname>
          </string-name>
          , et al.,
          <source>Research on Microservice Architecture: A Tertiary Study</source>
          ,
          <string-name>
            <given-names>SSRN</given-names>
            <surname>Electron</surname>
          </string-name>
          . J. (
          <year>2022</year>
          ). doi:
          <volume>10</volume>
          .2139/ssrn.4204345.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Waseem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Liang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Shahin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A Systematic</given-names>
            <surname>Mapping</surname>
          </string-name>
          <article-title>Study on Microservices Architecture in DevOps</article-title>
          ,
          <source>J. Syst. Softw</source>
          .
          <volume>170</volume>
          (
          <year>2020</year>
          )
          <article-title>110798</article-title>
          . doi:
          <volume>10</volume>
          .1016/j.jss.
          <year>2020</year>
          .
          <volume>110798</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>F.</given-names>
            <surname>Auer</surname>
          </string-name>
          , et al.,
          <article-title>From monolithic systems to Microservices: An assessment framework</article-title>
          ,
          <source>Inf. Softw. Technol</source>
          .
          <volume>137</volume>
          (
          <year>2021</year>
          )
          <article-title>106600</article-title>
          . doi:
          <volume>10</volume>
          .1016/j.infsof.
          <year>2021</year>
          .
          <volume>106600</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>P. D.</given-names>
            <surname>Francesco</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Malavolta</surname>
          </string-name>
          , P. Lago, Research on Architecting Microservices: Trends, Focus, and
          <article-title>Potential for Industrial Adoption</article-title>
          , in: 2017
          <source>IEEE International Conference on Software Architecture (ICSA)</source>
          ,
          <source>IEEE</source>
          (
          <year>2017</year>
          ). doi:
          <volume>10</volume>
          .1109/icsa.
          <year>2017</year>
          .
          <volume>24</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>G.</given-names>
            <surname>Blinowski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ojdowska</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Przybylek</surname>
          </string-name>
          ,
          <article-title>Monolithic vs. Microservice Architecture: A Performance and Scalability Evaluation, IEEE Access 10 (</article-title>
          <year>2022</year>
          )
          <fpage>20357</fpage>
          -
          <lpage>20374</lpage>
          . doi:
          <volume>10</volume>
          .1109/access.
          <year>2022</year>
          .
          <volume>3152803</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>N. Salaheddin</given-names>
            <surname>Elgheriani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. D.</given-names>
            <surname>Ali Salem</surname>
          </string-name>
          <string-name>
            <surname>Ahme</surname>
          </string-name>
          ,
          <article-title>Microservices vs</article-title>
          .
          <article-title>Monolithic Architectures [The Differential Structure Between Two Architectures]</article-title>
          ,
          <string-name>
            <given-names>Minar</given-names>
            <surname>Int</surname>
          </string-name>
          .
          <source>J. Appl. Sci. Technol</source>
          .
          <volume>4</volume>
          (
          <issue>3</issue>
          ) (
          <year>2022</year>
          )
          <fpage>500</fpage>
          -
          <lpage>514</lpage>
          . doi:
          <volume>10</volume>
          .47832/
          <fpage>2717</fpage>
          -
          <lpage>8234</lpage>
          .
          <fpage>12</fpage>
          .47.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Dreis</surname>
          </string-name>
          , et al.,
          <article-title>Model to Formation Data Base of Internal Parameters for Assessing the Status of the State Secret Protection</article-title>
          ,
          <source>in: Workshop on Cybersecurity Providing in Information and Telecommunication Systems, CPITS</source>
          , vol.
          <volume>3654</volume>
          (
          <year>2024</year>
          )
          <fpage>277</fpage>
          -
          <lpage>289</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>D.</given-names>
            <surname>Berestov</surname>
          </string-name>
          , et al.,
          <article-title>Analysis of Features and prospects of Application of Dynamic Iterative Assessment of Information Security Risks</article-title>
          ,
          <source>in: Workshop on Cybersecurity Providing in Information and Telecommunication Systems, CPITS</source>
          , vol.
          <volume>2923</volume>
          (
          <year>2021</year>
          )
          <fpage>329</fpage>
          -
          <lpage>335</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Shevchenko</surname>
          </string-name>
          , et al.,
          <source>Information Security Risk Management using Cognitive Modeling, in: Workshop on Cybersecurity Providing in Information and Telecommunication Systems II, CPITS-II</source>
          , vol.
          <volume>3550</volume>
          (
          <year>2023</year>
          )
          <fpage>297</fpage>
          -
          <lpage>305</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>P.</given-names>
            <surname>Nkomo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Coetzee</surname>
          </string-name>
          ,
          <article-title>Software Development Activities for Secure Microservices</article-title>
          ,
          <source>in: Computational Science and Its Applications - ICCSA 2019</source>
          , Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2019</year>
          )
          <fpage>573</fpage>
          -
          <lpage>585</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -24308-1_
          <fpage>46</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>M.</given-names>
            <surname>Matias</surname>
          </string-name>
          , et al.,
          <source>Enhancing Effectiveness and Security in Microservices Architecture, Procedia Comput. Sci</source>
          .
          <volume>239</volume>
          (
          <year>2024</year>
          )
          <fpage>2260</fpage>
          -
          <lpage>2269</lpage>
          . doi:
          <volume>10</volume>
          .1016/j.procs.
          <year>2024</year>
          .
          <volume>06</volume>
          .417.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>P.</given-names>
            <surname>Haindl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Kochberger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Sveggen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A Systematic</given-names>
            <surname>Literature</surname>
          </string-name>
          <article-title>Review of Inter-Service Security Threats and Mitigation Strategies in Microservice Architectures</article-title>
          , IEEE Access (
          <year>2024</year>
          )
          <article-title>1</article-title>
          . doi:
          <volume>10</volume>
          .1109/access.
          <year>2024</year>
          .
          <volume>3406500</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>J.</given-names>
            <surname>Kazanavičius</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Mažeika</surname>
          </string-name>
          ,
          <source>Evaluation of Microservice Communication While Decomposing Monoliths, Comput. Inform</source>
          .
          <volume>42</volume>
          (
          <issue>1</issue>
          ) (
          <year>2023</year>
          )
          <fpage>1</fpage>
          -
          <lpage>36</lpage>
          . doi:
          <volume>10</volume>
          .31577/cai_2023_
          <article-title>1_1</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>L. D. S. B. Weerasinghe</surname>
            ,
            <given-names>I. Perera</given-names>
          </string-name>
          ,
          <article-title>Evaluating the Inter-Service Communication on Microservice Architecture</article-title>
          ,
          <source>in 2022 7th International Conference on Information Technology Research (ICITR)</source>
          ,
          <source>IEEE</source>
          (
          <year>2022</year>
          ). doi:
          <volume>10</volume>
          .1109/icitr57877.
          <year>2022</year>
          .
          <volume>9992918</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Microservices</surname>
            <given-names>Security</given-names>
          </string-name>
          :
          <article-title>Challenges &amp; 7 Ways to Secure Microservices</article-title>
          . URL: https://www.aquasec.com/cloud-nativeacademy/cnapp/microservices-security/
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>D.</given-names>
            <surname>Yu</surname>
          </string-name>
          , et al.,
          <source>A Survey on Security Issues in Services Communication of Microservices‐enabled Fog Applications</source>
          , Concurr. Comput.
          <volume>31</volume>
          (
          <issue>22</issue>
          ) (
          <year>2018</year>
          ). doi:
          <volume>10</volume>
          .1002/cpe.4436.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>M.</given-names>
            <surname>Driss</surname>
          </string-name>
          , et al., Microservices in IoT Security: Current Solutions, Research Challenges, and Future Directions,
          <source>Procedia Comput. Sci</source>
          .
          <volume>192</volume>
          (
          <year>2021</year>
          )
          <fpage>2385</fpage>
          -
          <lpage>2395</lpage>
          . doi:
          <volume>10</volume>
          .1016/j.procs.
          <year>2021</year>
          .
          <volume>09</volume>
          .007.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>M. G. de Almeida</surname>
            ,
            <given-names>E. D.</given-names>
          </string-name>
          <string-name>
            <surname>Canedo</surname>
          </string-name>
          ,
          <article-title>Authentication and Authorization in Microservices Architecture: A Systematic Literature Review, Appl</article-title>
          . Sci.
          <volume>12</volume>
          (
          <issue>6</issue>
          ) (
          <year>2022</year>
          )
          <article-title>3023</article-title>
          . doi:
          <volume>10</volume>
          .3390/app12063023.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>G.</given-names>
            <surname>Liu</surname>
          </string-name>
          , et al.,
          <source>Microservices: Architecture</source>
          , Container, and Challenges,
          <source>in: 2020 IEEE 20th International Conference on Software Quality</source>
          , Reliability and Security
          <string-name>
            <surname>Companion (QRS-C)</surname>
          </string-name>
          , IEEE (
          <year>2020</year>
          ). doi:
          <volume>10</volume>
          .1109/qrs-c51114.
          <year>2020</year>
          .
          <volume>00107</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>O.</given-names>
            <surname>Bentaleb</surname>
          </string-name>
          , et al.,
          <string-name>
            <surname>Containerization</surname>
            <given-names>Technologies</given-names>
          </string-name>
          : Taxonomies, Applications and Challenges,
          <string-name>
            <surname>J. Supercomput.</surname>
          </string-name>
          (
          <year>2021</year>
          ).
          <source>doi: 10.1007/s11227-021-03914-1.</source>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>What</given-names>
            <surname>Are</surname>
          </string-name>
          <string-name>
            <surname>Microservices</surname>
          </string-name>
          ? URL: https://microservices.io/index.html
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>E.</given-names>
            <surname>Casalicchio</surname>
          </string-name>
          ,
          <string-name>
            <surname>S. Iannucci,</surname>
          </string-name>
          <article-title>The State‐of‐the‐Art in Container Technologies: Application, Orchestration and Security, Concurr</article-title>
          . Comput.
          <volume>32</volume>
          (
          <issue>17</issue>
          ) (
          <year>2020</year>
          ). doi:
          <volume>10</volume>
          .1002/cpe.5668.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>N. F.</given-names>
            <surname>Syed</surname>
          </string-name>
          , et al.,
          <article-title>Zero Trust Architecture (ZTA): A Comprehensive Survey</article-title>
          ,
          <source>IEEE Access 1</source>
          (
          <year>2022</year>
          ). doi:
          <volume>10</volume>
          .1109/access.
          <year>2022</year>
          .
          <volume>3174679</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>D.</given-names>
            <surname>Klein</surname>
          </string-name>
          , Micro-Segmentation:
          <article-title>Securing Complex Cloud Environments</article-title>
          , Netw. Secur.
          <year>2019</year>
          (
          <article-title>3) (</article-title>
          <year>2019</year>
          )
          <fpage>6</fpage>
          -
          <lpage>10</lpage>
          . doi:
          <volume>10</volume>
          .1016/s1353-
          <volume>4858</volume>
          (
          <issue>19</issue>
          )
          <fpage>30034</fpage>
          -
          <lpage>0</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>R.</given-names>
            <surname>Chandramouli</surname>
          </string-name>
          ,
          <article-title>Guide to Secure Enterprise Network Landscape, National Institute of Standards and Technology</article-title>
          , Gaithersburg,
          <string-name>
            <surname>MD</surname>
          </string-name>
          (
          <year>2022</year>
          ). doi:
          <volume>10</volume>
          .6028/nist.sp.
          <volume>800</volume>
          -
          <fpage>215</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>N.</given-names>
            <surname>Mateus-Coelho</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Cruz-Cunha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. G.</given-names>
            <surname>Ferreira</surname>
          </string-name>
          , Security in Microservices Architectures,
          <source>Procedia Comput. Sci</source>
          .
          <volume>181</volume>
          (
          <year>2021</year>
          )
          <fpage>1225</fpage>
          -
          <lpage>1236</lpage>
          . doi:
          <volume>10</volume>
          .1016/j.procs.
          <year>2021</year>
          .
          <volume>01</volume>
          .320.
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>P.</given-names>
            <surname>Siriwardena</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Dias</surname>
          </string-name>
          , Microservices Security in Action, Manning Publications Company (
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <article-title>What is mTLS and How to Implement it with Istio</article-title>
          . URL: https://imesh.ai/blog/what-is
          <article-title>-mtls-and-how-toimplement-it-with-istio</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>R.</given-names>
            <surname>Chandramouli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Butcher</surname>
          </string-name>
          ,
          <article-title>Building Secure Microservices-based Applications using Service-Mesh Architecture, National Institute of Standards and Technology</article-title>
          , Gaithersburg,
          <string-name>
            <surname>MD</surname>
          </string-name>
          (
          <year>2020</year>
          ). doi:
          <volume>10</volume>
          .6028/nist.sp.800-
          <fpage>204a</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>R.</given-names>
            <surname>Chandramouli</surname>
          </string-name>
          ,
          <article-title>Implementation of DevSecOps for a Microservices-based Application with Service Mesh, National Institute of Standards and Technology (</article-title>
          <year>2022</year>
          ). doi:
          <volume>10</volume>
          .6028/nist.sp.800-
          <fpage>204c</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>S.</given-names>
            <surname>Newman</surname>
          </string-name>
          , Building Microservices:
          <article-title>Designing FineGrained Systems,</article-title>
          <string-name>
            <surname>O'Reilly Media</surname>
          </string-name>
          ,
          <string-name>
            <surname>Incorporated</surname>
          </string-name>
          (
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <surname>M. R. Saleh Sedghpour</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Klein</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Tordsson</surname>
          </string-name>
          ,
          <article-title>An Empirical Study of Service Mesh Traffic Management Policies for Microservices</article-title>
          , in: ICPE '22: ACM/SPEC International Conference on Performance Engineering, ACM, New York, NY, USA (
          <year>2022</year>
          ). doi:
          <volume>10</volume>
          .1145/3489525.3511686.
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <article-title>What is a Service Mesh? URL: https://aws</article-title>
          .amazon.com/what-is/service-mesh/
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>O. V.</given-names>
            <surname>Talaver</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. A.</given-names>
            <surname>Vakaliuk</surname>
          </string-name>
          ,
          <article-title>Telemetry to Solve Dynamic Analysis of a Distributed System</article-title>
          ,
          <string-name>
            <surname>J. Edge Comput.</surname>
          </string-name>
          (
          <year>2024</year>
          ). doi:
          <volume>10</volume>
          .55056/jec.728.
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <surname>Tai</surname>
            <given-names>Ramirez</given-names>
          </string-name>
          ,
          <article-title>Wai Yan Elsa, A Framework to Build Secure Microservice Architecture</article-title>
          ,
          <source>Open Access Theses &amp; Dissertations</source>
          ,
          <volume>3857</volume>
          (
          <year>2023</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <given-names>C.</given-names>
            <surname>Richardson</surname>
          </string-name>
          , Microservices Patterns:
          <article-title>With Examples in Java, Manning Publications Co</article-title>
          . LLC (
          <year>2018</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <given-names>I.</given-names>
            <surname>Bazeniuc</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Zgureanu</surname>
          </string-name>
          , Information Security in Microservices Architectures,
          <source>in: 11th International Conference on “Electronics, Communications and Computing"</source>
          , Technical University of Moldova (
          <year>2022</year>
          ). doi:
          <volume>10</volume>
          .52326/ic-ecco.
          <year>2021</year>
          /sec.03.
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          <source>[39] OAuth 2</source>
          .
          <article-title>0 Grant Types</article-title>
          . URL: https://docs.vmware.com/en/Single-Sign-
          <article-title>On-forVMware-</article-title>
          <string-name>
            <surname>Tanzu-</surname>
          </string-name>
          Application-Service/1.16/sso/GUIDgrant-types.html
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <string-name>
            <given-names>A.</given-names>
            <surname>Venčkauskas</surname>
          </string-name>
          , et al.,
          <source>Enhancing Microservices Security with Token-Based Access Control Method, Sensors</source>
          <volume>23</volume>
          (
          <issue>6</issue>
          ) (
          <year>2023</year>
          )
          <article-title>3363</article-title>
          . doi:
          <volume>10</volume>
          .3390/s23063363.
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [41]
          <string-name>
            <given-names>W.</given-names>
            <surname>Jin</surname>
          </string-name>
          , et al.,
          <article-title>Secure Edge Computing Management Based on Independent Microservices Providers for Gateway-Centric IoT Networks</article-title>
          ,
          <source>IEEE Access 8</source>
          (
          <year>2020</year>
          )
          <fpage>187975</fpage>
          -
          <lpage>187990</lpage>
          . doi:
          <volume>10</volume>
          .1109/access.
          <year>2020</year>
          .
          <volume>3030297</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [42]
          <string-name>
            <given-names>C.</given-names>
            <surname>Fernando</surname>
          </string-name>
          ,
          <article-title>Implementing Observability for Enterprise Software Systems</article-title>
          , in: Solution Architecture Patterns for Enterprise, Apress, Berkeley, CA (
          <year>2022</year>
          )
          <fpage>231</fpage>
          -
          <lpage>268</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-1-
          <fpage>4842</fpage>
          - 8948-
          <issue>8</issue>
          _
          <fpage>7</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [43]
          <string-name>
            <given-names>API</given-names>
            <surname>Gateway</surname>
          </string-name>
          <article-title>Security</article-title>
          . URL: https://www.akamai.com/glossary/what-is
          <string-name>
            <surname>-</surname>
          </string-name>
          apigateway-security
        </mixed-citation>
      </ref>
      <ref id="ref44">
        <mixed-citation>
          [44]
          <string-name>
            <given-names>M.</given-names>
            <surname>Waseem</surname>
          </string-name>
          , et al.,
          <article-title>Decision Models for Selecting Patterns and Strategies in Microservices Systems and their Evaluation by Practitioners</article-title>
          ,
          <source>in: 2022 IEEE/ACM 44th International Conference on Software Engineering: Software Engineering in Practice (ICSESEIP)</source>
          ,
          <source>IEEE</source>
          (
          <year>2022</year>
          ). doi:
          <volume>10</volume>
          .1109/icseseip55303.
          <year>2022</year>
          .
          <volume>9793911</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref45">
        <mixed-citation>
          [45]
          <string-name>
            <given-names>P.</given-names>
            <surname>Atri</surname>
          </string-name>
          ,
          <article-title>Enhancing Big Data Security through Comprehensive Data Protection Measures: A Focus on</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>