{"id":5970,"date":"2024-11-14T10:23:26","date_gmt":"2024-11-14T10:23:26","guid":{"rendered":"https:\/\/gitprotect.io\/blog\/?p=5970"},"modified":"2025-12-04T16:14:18","modified_gmt":"2025-12-04T16:14:18","slug":"azure-devops-security-best-practices","status":"publish","type":"post","link":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/","title":{"rendered":"Azure DevOps Security Best Practices"},"content":{"rendered":"\n<p>Data-handling platforms such as Azure DevOps are often relied on by many different modern organizations, therefore it is important to secure such environments. These widely used platforms simplify DevOps processes like project management and the work of developers.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>However, there is a downside, the rise of technology brings an increased risk of cyber attacks. To deal with these your organization must prioritize security, implement data protection procedures, including <a href=\"https:\/\/gitprotect.io\/azure-devops-backup.html\" target=\"_blank\" rel=\"noreferrer noopener\">backup for Azure DevOps<\/a>, and review the most up-to-date best practices.&nbsp;<\/p>\n\n\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Potential risks concerning Azure DevOps<\/strong><\/h2>\n\n\n\n<p>As we started discussing, since DevOps is a very prominent and consistently growing market, it attracts the interest of many threat actors. Risks include accidental deletions due to human error as well as intentional deletions by malicious employees, which then, lead us to unauthorized access. Another huge threat is ransomware, which, without backup copies of your work and disaster recovery procedures in place, is a truly deadly weapon that can leave organizations in total chaos &#8211; huge costs, damaged reputation, missed deadlines, and lost clients. Just to put the current cyber threats into perspective, the<a href=\"https:\/\/www.ibm.com\/reports\/data-breach\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> <u>IBM Cost of a Data Breach Report 2024<\/u><\/a> states that the average cost of a data breach is 4.88 million dollars &#8211; a 10% increase from 2023.&nbsp;<\/p>\n\n\n\n<p>Moreover, due to the extensiveness and complexity of current DevOps ecosystems, errors that lead to platform outages take place too. A significant<a href=\"https:\/\/www.theregister.com\/2022\/02\/15\/microsoft_azure_devops_down\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> <u>outage of Azur<\/u><\/a>e DevOps services happened in 2022 when European users experienced degraded performance and even complete unavailability of Boards, Repos, <a href=\"https:\/\/gitprotect.io\/blog\/azure-devops-pipelines-guide\/\">Pipelines<\/a>, and Test Plans, which are rather critical services for many companies.\u00a0Here is a comment Azure DevOps users could see on the service&#8217;s <a href=\"https:\/\/status.dev.azure.com\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">status page<\/a>:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" width=\"840\" height=\"357\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/azure_devops_status.png\" alt=\"Azure DevOps status\" class=\"wp-image-5972\" style=\"width:500px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/azure_devops_status.png 840w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/azure_devops_status-300x128.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/azure_devops_status-768x326.png 768w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/azure_devops_status-400x170.png 400w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center\"><em>Source: <\/em><a href=\"https:\/\/www.theregister.com\/2022\/02\/15\/microsoft_azure_devops_down\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><em>The Register<\/em><\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Shared Responsibility Model&nbsp;<\/strong><\/h3>\n\n\n\n<p>Microsoft works following the Shared Responsibility Model, which is a division of duties between the SaaS provider and the customer. Microsoft outlines in<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/security\/fundamentals\/shared-responsibility\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> <u>their documentation<\/u><\/a> that in terms of SaaS, its responsibilities are the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>physical data centers,<\/li>\n\n\n\n<li>physical network,<\/li>\n\n\n\n<li>physical hosts,<\/li>\n\n\n\n<li>operating systems,<\/li>\n\n\n\n<li>network controls,<\/li>\n\n\n\n<li>and applications.<\/li>\n<\/ul>\n\n\n\n<p>Identity and directory infrastructure are shared duties by both parties. You, as the user, are responsible for your data, endpoints, accounts, and access management. The elements which you can impact in terms of security are important to pay attention to since you can directly improve them. Implement strict access controls, follow industry best practices, back up your data, and make sure you are ready for any disaster scenario.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" width=\"935\" height=\"551\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Shared-Responsibility-Model-for-Azure-DevOps.png\" alt=\"Shared Responsibility Model for Azure DevOps\" class=\"wp-image-5973\" style=\"width:500px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Shared-Responsibility-Model-for-Azure-DevOps.png 935w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Shared-Responsibility-Model-for-Azure-DevOps-300x177.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Shared-Responsibility-Model-for-Azure-DevOps-768x453.png 768w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Shared-Responsibility-Model-for-Azure-DevOps-400x236.png 400w\" sizes=\"(max-width: 935px) 100vw, 935px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center\"><em>Source: <\/em><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/security\/fundamentals\/shared-responsibility\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><em>Microsoft: Shared Responsibility in the Cloud<\/em><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Azure DevOps security best practices&nbsp;<\/strong><\/h2>\n\n\n\n<p>To keep your Azure DevOps data secure &#8211; both Server (on-premise) and Services (cloud), there is a range of procedures and best practices to follow. Whatever you learn in regards to securing your Azure DevOps stack, you should educate your team on it, to raise awareness and guarantee consistency in terms of security measures across your organization.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Identity and access controls&nbsp;<\/strong><\/h3>\n\n\n\n<p>Azure DevOps is a broad ecosystem (code repositories, pipelines, boards, artifacts, test plans, and more), which plays an important role in modern software development. It encompasses critical data, from configuration settings to actual source code. Therefore, you should restrict access according to the principle of least privilege for all users, and carefully manage permissions along with access control to enhance the security of data in Azure DevOps. Moreover, you should have different access levels for individual users or roles and never leave default permissions unchanged.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Restrict, monitor, and control access&nbsp;<\/strong><\/h4>\n\n\n\n<p>In modern software development, teams often work remotely and different employees are responsible for specific areas and processes. The last thing you want is confusion in terms of permission management, leaks, or deletions of critical data by accident or by malicious individuals. Therefore, it is necessary that you carefully implement strict access control across your Azure DevOps environments, and then manage them effectively.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Adopt the <strong>principle of least privilege<\/strong>. Restrict user access to minimum required permissions &#8211; the resources employees require for their tasks. If a member of your team needs access to data outside of their usual needs, you can give them temporary access. Now, you not only reduce the risk of intentional and accidental deletions thanks to limited access, but you also keep your organization more transparent, easier to manage and, also, simplify the audit process.&nbsp;<\/li>\n\n\n\n<li>Use <strong>Role Based Access Controls<\/strong> (RBAC), to guarantee that there is no excessive access to sensitive areas of your infrastructure. RBAC allows you to have roles, that have predefined permissions assigned, and then you simply assign those roles to users. This could simplify your access management as limitations do not have to be customized for each user but are instead pre-established for specific roles with access levels.&nbsp;<\/li>\n\n\n\n<li>Regularly <strong>review the granted access<\/strong> and make sure to implement proper access level management. Monitor the logs in order to be aware of any potential suspicious actions or access attempts. If anything raises alarms, deny permissions. Also, remember to disable and remove user accounts that are inactive. Such accounts open up the possibility of a malicious individual accessing your infrastructure and causing damage.&nbsp;<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Multi-factor authentication&nbsp;<\/strong><\/h4>\n\n\n\n<p>A strong password is the foundation of securing your data. However, even strong 16-character passwords with upper and lower case letters, special signs, and numbers can be broken. How to strengthen your password? Implement 2FA (2-factor authentication) or MFA (multi-factor authentication). With 2FA as an extra layer of security, you guarantee that apart from your password and login credentials, there must be another verification step to access the account, and that step is only known to you. This could be authenticated through getting a text message to your number or receiving an email or a call.&nbsp;<\/p>\n\n\n\n<p>Alternatively, to further secure your account, you could implement multiple-factor authentication. This way there will be several verification steps apart from the usual password and username. So, if an attacker attempts to access your account, you have many required pieces of information and devices to authorize access, which are only known to you.&nbsp;<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#f4fafe\"><strong>Use Microsoft Entra ID&nbsp;<\/strong><br><br>If you are looking for a way that would encompass different security features into one, an IAM solution might be a good idea. A cloud identity and access management service (IAM),<a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/fundamentals\/whatis\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> <u>Microsoft Entra ID<\/u><\/a>, helps organizations manage user identities and access control to a range of internal as well as external resources. With it comes SSO (Single Sign-On), which allows you to access multiple apps with the same credentials. You also get Multi-Factor Authentication (MFA) and the possibility to set access controls based on the user information, such as risk level, the state of their device, or its location. The service is free but you can also add paid features to it. This way you can narrow down your authorization process to just one service. Although convenient, there is still a need to outline and analyze the practices required to secure your Azure DevOps infrastructure &#8211; in-depth and one by one.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Create security groups&nbsp;<\/strong><\/h3>\n\n\n\n<p>Managing large projects and extensive teams can be difficult in terms of keeping all processes and data secure. If you create custom security groups, it helps to manage permissions and access. So, for example, project managers could simply be assigned to the relevant group with predefined permissions for their role. Also, Azure DevOps has default security groups ready to be used.&nbsp;<\/p>\n\n\n\n<p>Let\u2019s take a look at some of the main commands that can help you with the process of creating and managing<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/devops\/organizations\/security\/add-manage-security-groups?view=azure-devops\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> <u>security groups in Azure DevOps<\/u><\/a>.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To <strong>create a security group<\/strong> you can use: \u2018az devops security group create\u2019.&nbsp;<\/li>\n\n\n\n<li>If you need to <strong>delete security groups<\/strong> use: \u2018az devops security group delete\u2019.&nbsp;<\/li>\n\n\n\n<li><strong>Add users<\/strong> to security groups through: \u2018az devops security group membership add\u2019.<\/li>\n\n\n\n<li><strong>Remove group members<\/strong> from security groups with: \u2018az devops security group membership remove\u2019.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Ideally, you should limit access to repos and projects, disallow public project creation within your organization, and prevent users from creating new projects without confirmation.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Have credentials and authentication security&nbsp;<\/strong><\/h3>\n\n\n\n<p>Protect your account by keeping your credentials secure, and implementing an effective authentication process. You can take an extra step and use <strong>Personal Access Tokens<\/strong> (PATs) instead of the usual passwords. PATs are a long string of random characters that you can use to securely authenticate and access a service or system.&nbsp;<\/p>\n\n\n\n<p>Alternatively, you can also use <strong>SSH keys<\/strong>, which consist of a private key assigned to the user and a public one, that\u2019s shared with the server. You can also add a passphrase to your private SSH key, to further secure access to it. However, there are a couple of pointers and recommended practices for using PATs and SSH keys.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>How to securely use PATs and SSH keys?&nbsp;<\/strong><\/h4>\n\n\n\n<p>Whether using PATs or <a href=\"https:\/\/gitprotect.io\/blog\/how-to-clone-using-ssh-in-git\/\" target=\"_blank\" rel=\"noreferrer noopener\">SSH<\/a> keys for Azure DevOps services, you should restrict them to the required minimum permissions. This way you can reduce the risk of unauthorized changes. You should also review all SSH keys and PATs, and revoke the ones which are not being used to minimize the risk of unwanted access by an old employee for example. Then, rotate both SSH keys and PATs regularly.<\/p>\n\n\n\n<p>By doing so, you can make sure that if a token or keys get exposed, their lifespan is limited and the ones that are compromised can\u2019t be used long-term. Note that with SSH keys you need proper management of those in terms of rotation as well as the generation of environment-specific keys. Moreover, you can protect your keys with a passphrase and even generate them on a hardware security key. In contrast, PATs can have set permissions as well as expiration dates.&nbsp;<\/p>\n\n\n\n<p>Also, remember that your SSH keys or PATs should not be hardcoded into your code within a repository, as it brings the risk of accidental exposure. What you could do instead is to use Azure Key Vault to store your PATS and SSH keys and securely retrieve them when needed.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/gitprotect.io\/devops-backup-academy.html\" target=\"_blank\" rel=\" noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"346\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/banner_orange-1024x346.png\" alt=\"DevOps Backup Academy\" class=\"wp-image-6769\" style=\"width:500px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/banner_orange-1024x346.png 1024w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/banner_orange-300x102.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/banner_orange-768x260.png 768w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/banner_orange-400x135.png 400w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/banner_orange.png 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\"><strong>Keep your network safe&nbsp;<\/strong><\/h3>\n\n\n\n<p>In order to securely use Azure DevOps you should follow recommendations that help to keep your network safe. Start off by restricting access to only specific IP addresses. This way you only allow traffic from trusted sources. Then, you should also keep your data encrypted &#8211; both at rest and in transit, and secure channels of communication through the use of HTTPS or other relevant protocols. As an extra step towards security, add web application firewalls (WAFs). This way you can monitor, as well as block any malicious traffic. Last but not least, whenever establishing connections, always make sure that certificates are valid and that trusted authorities have issued them.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Verify third-party integrations&nbsp;<\/strong><\/h3>\n\n\n\n<p>Microsoft\u2019s Azure DevOps can integrate with several useful applications, such as Microsoft Teams, and allow users to receive Azure notifications there. However, it is crucial to thoroughly understand and verify such apps before integrating them into your stack. Before you choose to add an application to upgrade your<a href=\"https:\/\/gitprotect.io\/blog\/exploring-best-practices-and-modern-trends-in-ci-cd\/\" target=\"_blank\" rel=\"noreferrer noopener\"> <u>CI\/CD<\/u><\/a>, check its reviews, who created it, and if it is compliant with industry security requirements and standards like<a href=\"https:\/\/gitprotect.io\/blog\/iso-27001-certification-gitprotects-by-xopero-software-iso-27001-audit-process-explained\/\" target=\"_blank\" rel=\"noreferrer noopener\"> <u>ISO 27001<\/u><\/a> or<a href=\"https:\/\/gitprotect.io\/blog\/gitprotect-by-xopero-is-now-soc-2-type-ii-compliant\/\" target=\"_blank\" rel=\"noreferrer noopener\"> <u>SOC 2<\/u><\/a>.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Pay attention to GitHub integrations&nbsp;<\/strong><\/h4>\n\n\n\n<p>When integrating GitHub with your Azure DevOps you will need to disable authentication through PATs and opt for OAuth flow to improve security. Also, don\u2019t use owner or admin identity for authentication of GitHub service connections. Remember, always access to the bare minimum. Then, make sure that no personal GitHub accounts are used as service connections within Azure DevOps; for that, you should have dedicated accounts.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Monitor processes through logging &amp; auditing&nbsp;<\/strong><\/h3>\n\n\n\n<p>When it comes to complex infrastructures, it is important to track activities taking place. Moreover, if you\u2019re dealing with a lot of employees, it could be beneficial to monitor processes through logging actions, and auditing. That, in turn, can allow you to pinpoint areas for improvement and spot potential vulnerabilities or risks within your organization. Any security incidents should be reviewed thoroughly and communicated to all teams.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Secure your repositories and branches&nbsp;<\/strong><\/h3>\n\n\n\n<p>Repositories often store critical information and require proper security measures. No one wants threat actors accessing, or even worse, damaging their source code. Make sure that access to repositories is restricted. Any pull requests should get reviewed by at least two different individuals before getting approved. This supports thorough checks and reviews of code and also increases accountability. Project requirements differ from one another, so, to guarantee comprehensive protection, you should implement customized security policies for specific repos and branches.&nbsp;<\/p>\n\n\n\n<p>Now, if there are any secrets related to production, these can be separated from the main branch and stored in an Azure Key Vault. Make sure that you limit access to only those individuals who require access to finish their tasks. Moreover, managing permissions is also a key aspect! This way you further protect your secrets and avoid mixing branches, especially your testing environments with production. This also helps to keep operations transparent and organized.<\/p>\n\n\n\n<p>What is more, your Azure DevOps environment should go through scanning and checks to support DevSecOps. Thus, you can eliminate any secrets from getting to production environments, improve the quality of code, and easily track relevant processes. Thankfully, Microsoft has a<a href=\"https:\/\/azure.microsoft.com\/en-us\/products\/devops\/github-advanced-security\/?WT.mc_id=DOP-MVP-5003548\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> <u>suite of tools<\/u><\/a> to accommodate this &#8211; GitHub Advanced Security, which provides you with:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Testing tools native to Azure DevOps&nbsp;<\/li>\n\n\n\n<li>Secret scanning&nbsp;<\/li>\n\n\n\n<li>Code scanning&nbsp;<\/li>\n\n\n\n<li>Dependency scanning<\/li>\n<\/ul>\n\n\n\n<p>Moreover, you should implement scanning as a regular aspect of your CI\/CD pipelines. This way you can continuously verify the security and integrity of your branches and repositories.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Don\u2019t allow forking&nbsp;<\/strong><\/h3>\n\n\n\n<p>Another important factor in Azure DevOps is<a href=\"https:\/\/gitprotect.io\/blog\/git-forking-workflow\/\" target=\"_blank\" rel=\"noreferrer noopener\"> <u>git forking<\/u><\/a>. Although useful in terms of making a copy of a project and then editing it without affecting the main branch, it raises some security issues. Namely, it complicates the tracking of processes, and as a result, slows it down. Additionally, by giving individuals the ability to simply make a copy of repos that your teams have spent days or even years building, it puts your organization at risk. Imagine if there was a temporary developer on your team or a person who is about to leave your company; what if they fork crucial builds and take advantage of it for their personal use or even for financial gain? The results could be gruesome and costly\u2026&nbsp;<\/p>\n\n\n\n<p>If you do allow forking in certain situations, make sure there are no secrets stored in the repos that are open for forking. Then, to further secure the process of forking, only allow manually triggered forking to support confidentiality and control over security reviews.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Add specific rules and policies for branches&nbsp;<\/strong><\/h3>\n\n\n\n<p>In order to put knowledge into practice and simplify security processes, you should set specific policies for different branches and general rules for repositories. Now, in order to set any<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/devops\/repos\/git\/branch-policies?view=azure-devops&amp;tabs=browser\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> <u>branch policies<\/u><\/a>, you need to be a member of the security group for Project Administrators or have the permissions for \u201cEdit policies\u201d at the repository level.&nbsp;<\/p>\n\n\n\n<p>Ideally, your policies should cover the aforementioned requirement of a minimum number of reviewers. Also, make sure that only relevant and verified individuals can access repositories and specific branches. Moreover, you need to guarantee that only trusted contributors are approved to make any changes. Plus, any code that is about to be imported into your Azure DevOps should be checked and audited. Amongst others, you also need to pay attention to clearly defining roles and their required permissions as well as implementing a standard for password rules.&nbsp;<\/p>\n\n\n\n<p>Policies and rules will vary depending on the types of organizations, specific repositories, and different branches. These should be thoroughly evaluated, discussed with security officers as well as development teams, and effectively implemented across the company and your Azure DevOps environment.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Create a SECURITY.md file&nbsp;<\/strong><\/h3>\n\n\n\n<p>Adding a SECURITY.md file to your development processes within Azure DevOps is beneficial for a number of reasons. What separates a README.md file from a SECURITY.md file is the fact that the former only includes a basic overview of a project, whereas the latter includes a set of procedures that must be followed while reporting security vulnerabilities in projects.&nbsp;<\/p>\n\n\n\n<p>A SECURITY.md file should cover a disclosure policy &#8211; how to communicate the discovered information and the specific person that should be contacted. Also, include a security update policy, that will describe the process of communicating a vulnerability to relevant individuals. Then, you need a security-related configuration that provides the required settings to improve the security of a project during deployment. Lastly, include any known vulnerabilities and possible enhancements for the future that aren\u2019t yet implemented.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Back up your Azure DevOps data&nbsp;<\/strong><\/h3>\n\n\n\n<p>To avoid data loss and downtime in case of ransomware attacks, accidental deletions, or outages, you should regularly back up your work. Ideally, the process should be automated to avoid human error and allow your employees to focus on their primary tasks. Backups help to keep your Azure DevOps data recoverable. When choosing a backup vendor, make sure that the following criteria are met:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Full data coverage<\/strong> (repositories, metadata, and relevant Azure DevOps services)<\/li>\n\n\n\n<li><strong>Automation <\/strong>along with scheduling of backup processes&nbsp;<\/li>\n\n\n\n<li>The ability to <strong>choose your storage<\/strong> (convenient to use Azure Blob)<\/li>\n\n\n\n<li>Unlimited <strong>retention <\/strong>(great for archiving purposes, compliance, and restoring data from a specific point in time)<\/li>\n\n\n\n<li><strong>Compliance <\/strong>with industry standards like SOC 2 Type II or ISO 27001&nbsp;<\/li>\n\n\n\n<li>Meet the<a href=\"https:\/\/xopero.com\/blog\/en\/backup-3-2-1-what-is-it-and-why-should-you-use-it-2\/\" target=\"_blank\" rel=\"noreferrer noopener\"> <u>3-2-1 backup rule<\/u><\/a> (at least 3 copies across 2 different storage instances, with 1 being stored off-site)&nbsp;<\/li>\n\n\n\n<li><strong>Ransomware <\/strong>protection&nbsp;<\/li>\n\n\n\n<li><strong>Encryption <\/strong>(including in-flight and at-rest data encryption, you should be able to use your own key too)&nbsp;<\/li>\n\n\n\n<li>Flexible <strong>restore and recovery capabilities<\/strong> (point-in-time restore, granular restore, full data recovery, cross-over recovery &#8211; in case Azure DevOps services are down)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Service-specific security&nbsp;<\/strong><\/h3>\n\n\n\n<p>Since Azure DevOps services are rather comprehensive, you need to pay attention to secure all of the services within it that you use. For<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/devops\/artifacts\/feeds\/feed-permissions?view=azure-devops\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> <u>Azure Artifacts<\/u><\/a>, you need a clear understanding of the differences between project collection administrators, feeds, and projects, and set feed permissions.<\/p>\n\n\n\n<p>As for<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/devops\/boards\/configure-customize?view=azure-devops\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> <u>Azure Boards<\/u><\/a>, set plan permissions and work tracking, and then, configure Azure Boards before making changes to a process. Additionally, you can customize query permissions.<\/p>\n\n\n\n<p>With<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/devops\/pipelines\/security\/overview?view=azure-devops\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> <u>Azure Pipelines<\/u><\/a>, you should customize pipeline settings in terms of permissions and make use of extended templates.<\/p>\n\n\n\n<p>We already covered the security of<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/devops\/repos\/git\/branch-permissions?view=azure-devops\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> <u>Azure Repos<\/u><\/a> but let\u2019s reinforce the need for proper access management and branch-specific policies to keep your code secure.<\/p>\n\n\n\n<p>Last but not least we have<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/devops\/organizations\/security\/set-permissions-access-test?view=azure-devops\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> <u>Azure Test Plans<\/u><\/a>, for which you also need to set appropriate permissions for testing.&nbsp;<\/p>\n\n\n\n<p>By adhering to the security best practices across all of your Azure DevOps services, you guarantee that your data is protected and that not a single aspect of your infrastructure is left vulnerable to any security risks.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to improve your security posture with GitProtect<\/strong><\/h2>\n\n\n\n<p>To fully protect your Azure DevOps data, it is important to implement a reliable backup and DR solution into your security strategy. With <a href=\"https:\/\/gitprotect.io\/azure-devops-backup.html\" target=\"_blank\" rel=\"noreferrer noopener\">GitProtect backup for Azure DevOps<\/a>, you can automate and monitor your backup processes as well as recover data using flexible restore options. GitProtect is compliant with a range of industry standards such as SOC II type 2 and ISO 27001. It can further support your compliance efforts, for example, by simplifying audits. &nbsp;<\/p>\n\n\n\n<p>Extensive backup coverage that encompasses all your Azure DevOps data is key to a complete cyber-defense strategy. As a comprehensive backup and DR solution, GitProtect secures Azure DevOps repos along with metadata for both Azure DevOps Server and Cloud options. With this backup software, your coverage will include repositories and their content, LFS, pull requests with labels and comments, projects, work items along with comments and attachments, project wiki, pipelines, environments, variable groups, processes, and work item types including their layouts and states.&nbsp;<\/p>\n\n\n\n<p>Last but not least, you should pay attention to comprehensive monitoring capabilities. This is significant in order to keep track of backup tasks and restore processes related to your Azure DevOps services. Therefore, with GitProtect you get a central management console and data-driven dashboards. These include statistics regarding your ecosystem\u2019s security, the latest backup and restore processes, compliance strength summaries, SLA audits, and monthly reports. You can also customize your email notifications or alternatively, set up Slack or Webhook notifications. This level of monitoring and alerting allows you to have a better overview of your organization\u2019s processes and enhance Azure DevOps security.<\/p>\n\n\n\n<p><a href=\"https:\/\/gitprotect.io\/sign-up.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>[FREE TRIAL] Ensure compliant Azure DevOps backup and recovery with a 14-day trial<\/strong><\/a><strong>\ud83d\ude80<\/strong><br><br><a href=\"https:\/\/calendly.com\/d\/3s9-n9z-pgc\/gitprotect-live-demo?month=2024-11\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>[CUSTOM DEMO] Let\u2019s talk about how backup &amp; DR software for Azure DevOps can help you mitigate the risks<\/strong><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Before you go:<\/h2>\n\n\n\n<p class=\"has-background\" style=\"background-color:#f4fafe\">\ud83d\udd0e Find out how to build a reliable <a href=\"https:\/\/gitprotect.io\/blog\/azure-devops-backup-best-practices\/\" target=\"_blank\" rel=\"noreferrer noopener\">backup strategy for your Azure DevOps<\/a> environment within the backup best practices<br><br>\ud83d\udcda Learn how to make sure that your <a href=\"https:\/\/gitprotect.io\/blog\/azure-devops-restore-and-disaster-recovery\/\" target=\"_blank\" rel=\"noreferrer noopener\">Disaster Recovery strategy for Azure DevOps<\/a> is effective<br><br>\u270d\ufe0f Stay up-to-date with the latest DevSecOps insights &#8211; subscribe to <a href=\"https:\/\/gitprotect.io\/gitprotect-newsletter.html?utm_source=blog&amp;utm_medium=blog\" target=\"_blank\" rel=\"noreferrer noopener\">GitProtect DevSecOps X-Ray Newsletter<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Data-handling platforms such as Azure DevOps are often relied on by many different modern organizations, therefore it is important to secure such environments. These widely used platforms simplify DevOps processes like project management and the work of developers.<\/p>\n","protected":false},"author":12,"featured_media":5971,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[100,2],"tags":[],"class_list":["post-5970","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-devops","category-git-backup-101","post--single"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Azure DevOps Security Best Practices - Blog | GitProtect.io<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure DevOps Security Best Practices - Blog | GitProtect.io\" \/>\n<meta property=\"og:description\" content=\"Data-handling platforms such as Azure DevOps are often relied on by many different modern organizations, therefore it is important to secure such environments. These widely used platforms simplify DevOps processes like project management and the work of developers.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog | GitProtect.io\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/XoperoSoftware\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-14T10:23:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-04T16:14:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Become-the-master-of-Disaster-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mi\u0142osz Jesis, Technical Content Writer at GitProtect.io\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GitProtectio\" \/>\n<meta name=\"twitter:site\" content=\"@GitProtectio\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mi\u0142osz Jesis, Technical Content Writer at GitProtect.io\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/\"},\"author\":{\"name\":\"Mi\u0142osz Jesis, Technical Content Writer at GitProtect.io\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/3404d5bf8d1a1c26abb51a4c2cacbc05\"},\"headline\":\"Azure DevOps Security Best Practices\",\"datePublished\":\"2024-11-14T10:23:26+00:00\",\"dateModified\":\"2025-12-04T16:14:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/\"},\"wordCount\":3502,\"publisher\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Become-the-master-of-Disaster-1.png\",\"articleSection\":[\"Azure DevOps\",\"Git Backup 101\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/\",\"url\":\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/\",\"name\":\"Azure DevOps Security Best Practices - Blog | GitProtect.io\",\"isPartOf\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Become-the-master-of-Disaster-1.png\",\"datePublished\":\"2024-11-14T10:23:26+00:00\",\"dateModified\":\"2025-12-04T16:14:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#primaryimage\",\"url\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Become-the-master-of-Disaster-1.png\",\"contentUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Become-the-master-of-Disaster-1.png\",\"width\":1200,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/gitprotect.io\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Azure DevOps Security Best Practices\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#website\",\"url\":\"https:\/\/gitprotect.io\/blog\/\",\"name\":\"GitProtect.io Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/gitprotect.io\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#organization\",\"name\":\"GitProtect.io\",\"url\":\"https:\/\/gitprotect.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/05\/favicon-528x528-1.png\",\"contentUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/05\/favicon-528x528-1.png\",\"width\":528,\"height\":528,\"caption\":\"GitProtect.io\"},\"image\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/XoperoSoftware\/\",\"https:\/\/x.com\/GitProtectio\",\"https:\/\/www.linkedin.com\/company\/xopero-software\/\",\"https:\/\/www.youtube.com\/channel\/UCiEnl6n0mIO6w7twccz-l2w\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/3404d5bf8d1a1c26abb51a4c2cacbc05\",\"name\":\"Mi\u0142osz Jesis, Technical Content Writer at GitProtect.io\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/08\/milosz-jesis-technical-content-writer-at-gitprotect.io_avatar-96x96.png\",\"contentUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/08\/milosz-jesis-technical-content-writer-at-gitprotect.io_avatar-96x96.png\",\"caption\":\"Mi\u0142osz Jesis, Technical Content Writer at GitProtect.io\"},\"description\":\"Milosz is Technical Content Writer at GitProtect, demonstrating fluency in both Polish and English, and a passion for language and technology. Currently pursuing a degree in Philosophy at UWE Bristol, he excels in creating engaging technical content that bridges the gap between users and the emerging technologies. Milosz leverages his writing skills and technical knowledge to author articles and blog posts, with a focus on DevOps, cyber-security, and potential cyber-threats, among other crucial IT topics. Additionally, valuable translations provided by Milosz further enhance GitProtect's communication and global outreach.\",\"url\":\"https:\/\/gitprotect.io\/blog\/author\/milosz-jesis\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Azure DevOps Security Best Practices - Blog | GitProtect.io","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/","og_locale":"en_US","og_type":"article","og_title":"Azure DevOps Security Best Practices - Blog | GitProtect.io","og_description":"Data-handling platforms such as Azure DevOps are often relied on by many different modern organizations, therefore it is important to secure such environments. These widely used platforms simplify DevOps processes like project management and the work of developers.","og_url":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/","og_site_name":"Blog | GitProtect.io","article_publisher":"https:\/\/www.facebook.com\/XoperoSoftware\/","article_published_time":"2024-11-14T10:23:26+00:00","article_modified_time":"2025-12-04T16:14:18+00:00","og_image":[{"width":1200,"height":600,"url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Become-the-master-of-Disaster-1.png","type":"image\/png"}],"author":"Mi\u0142osz Jesis, Technical Content Writer at GitProtect.io","twitter_card":"summary_large_image","twitter_creator":"@GitProtectio","twitter_site":"@GitProtectio","twitter_misc":{"Written by":"Mi\u0142osz Jesis, Technical Content Writer at GitProtect.io","Est. reading time":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#article","isPartOf":{"@id":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/"},"author":{"name":"Mi\u0142osz Jesis, Technical Content Writer at GitProtect.io","@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/3404d5bf8d1a1c26abb51a4c2cacbc05"},"headline":"Azure DevOps Security Best Practices","datePublished":"2024-11-14T10:23:26+00:00","dateModified":"2025-12-04T16:14:18+00:00","mainEntityOfPage":{"@id":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/"},"wordCount":3502,"publisher":{"@id":"https:\/\/gitprotect.io\/blog\/#organization"},"image":{"@id":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#primaryimage"},"thumbnailUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Become-the-master-of-Disaster-1.png","articleSection":["Azure DevOps","Git Backup 101"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/","url":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/","name":"Azure DevOps Security Best Practices - Blog | GitProtect.io","isPartOf":{"@id":"https:\/\/gitprotect.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#primaryimage"},"image":{"@id":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#primaryimage"},"thumbnailUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Become-the-master-of-Disaster-1.png","datePublished":"2024-11-14T10:23:26+00:00","dateModified":"2025-12-04T16:14:18+00:00","breadcrumb":{"@id":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#primaryimage","url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Become-the-master-of-Disaster-1.png","contentUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/11\/Become-the-master-of-Disaster-1.png","width":1200,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/gitprotect.io\/blog\/azure-devops-security-best-practices\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/gitprotect.io\/blog\/"},{"@type":"ListItem","position":2,"name":"Azure DevOps Security Best Practices"}]},{"@type":"WebSite","@id":"https:\/\/gitprotect.io\/blog\/#website","url":"https:\/\/gitprotect.io\/blog\/","name":"GitProtect.io Blog","description":"","publisher":{"@id":"https:\/\/gitprotect.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gitprotect.io\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/gitprotect.io\/blog\/#organization","name":"GitProtect.io","url":"https:\/\/gitprotect.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/05\/favicon-528x528-1.png","contentUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/05\/favicon-528x528-1.png","width":528,"height":528,"caption":"GitProtect.io"},"image":{"@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/XoperoSoftware\/","https:\/\/x.com\/GitProtectio","https:\/\/www.linkedin.com\/company\/xopero-software\/","https:\/\/www.youtube.com\/channel\/UCiEnl6n0mIO6w7twccz-l2w"]},{"@type":"Person","@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/3404d5bf8d1a1c26abb51a4c2cacbc05","name":"Mi\u0142osz Jesis, Technical Content Writer at GitProtect.io","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/08\/milosz-jesis-technical-content-writer-at-gitprotect.io_avatar-96x96.png","contentUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/08\/milosz-jesis-technical-content-writer-at-gitprotect.io_avatar-96x96.png","caption":"Mi\u0142osz Jesis, Technical Content Writer at GitProtect.io"},"description":"Milosz is Technical Content Writer at GitProtect, demonstrating fluency in both Polish and English, and a passion for language and technology. Currently pursuing a degree in Philosophy at UWE Bristol, he excels in creating engaging technical content that bridges the gap between users and the emerging technologies. Milosz leverages his writing skills and technical knowledge to author articles and blog posts, with a focus on DevOps, cyber-security, and potential cyber-threats, among other crucial IT topics. Additionally, valuable translations provided by Milosz further enhance GitProtect's communication and global outreach.","url":"https:\/\/gitprotect.io\/blog\/author\/milosz-jesis\/"}]}},"_links":{"self":[{"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts\/5970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/comments?post=5970"}],"version-history":[{"count":4,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts\/5970\/revisions"}],"predecessor-version":[{"id":7957,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts\/5970\/revisions\/7957"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/media\/5971"}],"wp:attachment":[{"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/media?parent=5970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/categories?post=5970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/tags?post=5970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}