{"id":2364,"date":"2022-02-02T14:07:49","date_gmt":"2022-02-02T14:07:49","guid":{"rendered":"https:\/\/gitprotect.io\/blog\/?p=2364"},"modified":"2025-03-07T11:04:10","modified_gmt":"2025-03-07T11:04:10","slug":"github-actions-how-to-use-it-for-security-and-compliance-needs","status":"publish","type":"post","link":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/","title":{"rendered":"GitHub Actions &#8211; How to Use It for Security and Compliance Needs"},"content":{"rendered":"\n<p>First of all, let\u2019s clarify what GitHub Actions actually is and what it has to do with security and compliance. In short, it is a feature used for workflow automation. It is a <a href=\"https:\/\/gitprotect.io\/blog\/continuous-integration-and-continuous-delivery-with-jira-done-right-advanced\/\" target=\"_blank\" rel=\"noreferrer noopener\">continuous integration and continuous delivery<\/a> platform that allows you to automate your build, test, and deployment pipeline. Like any tool of this type, it permits you to run Actions triggered by a change in the repository, for example, a merged pull request.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>However, that\u2019s not all and the possibilities are much greater here. GitHub Actions can trigger a specific workflow based on other events too. For example, every new issue can automatically add the appropriate labels. Now, let\u2019s check out something related to the subject of compliance, such as GitHub Membership Audit Action. It is a ready-made action available in the Marketplace that allows you to audit which users have access to which repository and what permissions they have in it. Of course, we can also trigger such Actions manually, although automation is their main advantage.<\/p>\n\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"github-actions-workflow\">GitHub Actions workflow explained<\/h2>\n\n\n\n<p>Let\u2019s go over how it works before we move on. As I mentioned before, the basic idea is that we define an action, which is then triggered automatically based on some event in our repository. When defining our workflow, we can run one or multiple jobs and, most importantly, we can run them in sequence or in parallel. Now, let\u2019s jump into the details.&nbsp;<\/p>\n\n\n\n<p>Each job contains one or more steps to be performed. In addition, everyone is run inside a container or their own virtual machine, the so-called runner, which is quite important from a security perspective as it allows for the isolation of operations. GitHub provides Ubuntu, Windows, or macOS runners, but you can host your own runner anytime you want to. All steps of a given job are either an executable shell script or an action, which is a custom application that performs a frequently repeated task.<\/p>\n\n\n\n<p>The whole concept of GitHub Actions can be illustrated by the following graphic:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/LiIsNm9JB7JXVI6SVBdleHkrDvuGGJvGhlH6u_kLdsAtLRYFd_dTW_9zQ9Rqp7ge7TPrzFhCx_PF9Z5agIzJz6Z6Xy2-o_KEKH04vqKUSpop6gNA66yrp2T-nPRemVeO0ETgx9a2\" alt=\"GitHub Actions workflow\" style=\"width:677px;height:236px\"\/><figcaption class=\"wp-element-caption\">Source: <a href=\"https:\/\/docs.github.com\/e\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a><\/figcaption><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"risks-and-security\">Risks and security<\/h2>\n\n\n\n<p>Next in line, we have risks and <a href=\"https:\/\/docs.github.com\/en\/actions\/security-for-github-actions\/security-guides\/security-hardening-for-github-actions?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">security in terms of GitHub Actions<\/a>. As with any tool or platform, it is necessary to keep it secured. Secrets shall never be stored just as plain text in your workflow files, and scripts that are implemented shall always be verified, also make sure to have multiple code owners &#8211; the list goes on, but you get the picture. The number of incidents that affected GitHub users throughout 2023 grew by over 20% when comparing it to 2024, as outlined by the <a href=\"https:\/\/gitprotect.io\/blog\/study-highlights-the-major-cyber-risks\/\" target=\"_blank\" rel=\"noreferrer noopener\">The State of DevOps Threats Report<\/a>. These statistics suggest it is a good idea to improve security practices.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"compliance-and-auditing\">Compliance and Auditing<\/h3>\n\n\n\n<p>For several reasons, companies take measures to increase the level of security and then verify it regularly. In addition, certain standards are introduced and audits are carried out, both by internal and external companies. In many companies, such audits are enforced by law or agreements with clients. This is a very serious topic, going beyond the usual common-sense care for your own safety.<\/p>\n\n\n\n<p>So, why is compliance crucial for today\u2019s software development? Well, there are a couple of reasons:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Security and risk mitigation &#8211; adhering to mandated security requirements guarantees better data protection at least to the industry standard level.<\/li>\n\n\n\n<li>Regulatory requirements mandated by law, simply must be followed to stay compliant.<\/li>\n\n\n\n<li>Avoid paying fines for non-compliance.<\/li>\n\n\n\n<li>Compliance is great for reputation.<\/li>\n\n\n\n<li>Clients may simply require you to be compliant.<\/li>\n<\/ul>\n\n\n\n<p>In the introduction, I mentioned the already existing <strong>GitHub action for auditing the membership and access rights for any repository.<\/strong> A very useful tool, especially if we have lots of rotation or short-term projects, access to which should only be granted temporarily. Thanks to this action, we can easily track any deviations from the expected state.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p class=\"has-text-align-left\" style=\"font-size:22px\">Ready to work with GitHub Actions? Do the next best thing and <strong>secure your code with the first professional GitHub backup<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button align=&quot;center&quot;\"><a class=\"wp-block-button__link has-background wp-element-button\" href=\"https:\/\/gitprotect.io\/sign-up.html\" style=\"border-radius:50px;background-color:#ff0300\" target=\"_blank\" rel=\"noreferrer noopener\">Start 14 days free GitProtect trial<\/a><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dependency-graph-and-dependabot\">Dependency graph and Dependabot<\/h3>\n\n\n\n<p>GitHub provides some other robust tools that can be used as GitHub Action for compliance needs. Namely, the <strong>dependency graph and Dependabot alerts<\/strong>. The former shows two things related to our repository:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>dependencies \u2013 the ecosystems and packages it depends on<\/li>\n\n\n\n<li>dependents \u2013 the repositories and packages that depend on it<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">How to use the Dependency graph and Dependabot<\/h4>\n\n\n\n<p>The important thing to note is that we must somehow inform GitHub what we treat as a dependency by placing this information in the appropriate configuration files, e.g. pom.xml for Maven, package-lock.json for NPM, and so on.<\/p>\n\n\n\n<p>The Dependabot alerts, in turn, work as follows: <strong>GitHub has its own database of potentially vulnerable dependencies<\/strong> and then informs us if any dependency we use is on this list. The most common solution to this problem is to simply update such a dependency to the latest version.<\/p>\n\n\n\n<p>As we know how it works we can now use these tools as an Action. Of course, we can define our own actions, according to our needs and internal compliance rules. However, I suggest using the existing ones, as GitHub itself recommends. We are talking about project <a href=\"https:\/\/github.com\/marketplace\/actions\/ghascompliance\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">ghascomliance<\/a>, based on the MIT License. Using this solution, we can easily define a security and compliance action that will meet our expectations. The configuration file allows us to set various license conditions, Dependabot, or even secret scanning. There are many possibilities, including determining the threshold of what number of threats found (we can determine their importance) is critical for us, and what is acceptable. The most important takeaway is that with these types of tools, we can use GitHub Actions for security purposes.<\/p>\n\n\n\n<p>We also recommend using tools like <a href=\"https:\/\/mergify.com\/?utm_source=comarketing&amp;utm_medium=blog&amp;utm_campaign=gitprotect\"><strong>Mergify <\/strong><\/a>to merge dependencies updates and save time.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dependency Review<\/h3>\n\n\n\n<p>To complete dependency management, GitHub provides another tool called Dependency Review. It allows developers to spot any insecure dependencies before adding them to their ecosystem. This feature is available for public repositories on GitHub.com and repositories owned by organizations on GitHub Enterprise Cloud with <a href=\"https:\/\/docs.github.com\/en\/get-started\/learning-about-github\/about-github-advanced-security\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">GitHub Advanced Security<\/a> turned on.<\/p>\n\n\n\n<p>Dependency Review can help you spot changes in dependencies and see how they affect security for each pull request. You will get a detailed diff in the \u201cFiles Changed\u201d of a pull request. The tool covers aspects such as the ability to see dependencies that have been removed, added, and\/or updated &#8211; including the dates. Another thing to note is that you can see the number of projects that use these components. And finally, the information related to vulnerabilities of these dependencies will also be available.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"github-actions-workflow-best-practices\">GitHub Actions workflow &#8211; best practices<\/h2>\n\n\n\n<p>I mentioned at the beginning that each GitHub Action runs on a separate virtual machine or container, which provides isolation and therefore security. However, as usual, there are no perfect solutions. For example, output logs of every action are visible to anyone with access to the repository. In general, it is not a problem, as GitHub is there to protect our secrets inside the <a href=\"https:\/\/gitprotect.io\/blog\/git-workflows\/\" target=\"_blank\" rel=\"noreferrer noopener\">workflows<\/a>, however, it is not impossible to expose them if we define our own script. Make sure to scan for any exposed secrets, be careful, and <strong>double-check manually created scripts before you add them to your GitHub Actions workflow<\/strong>.<\/p>\n\n\n\n<p>Several times I encouraged you to use ready-made solutions, i.e. the already existing Actions. Because why reinvent the wheel? Reusable components are a big time saver. But I will repeat once again the fact that there are no universal and absolutely safe solutions. Whenever we use external tools, libraries, or any other dependency, we have to be very careful and check if we can trust it. Fortunately, in the case of Actions, <a href=\"https:\/\/gitprotect.io\/blog\/gitprotect-io-is-now-available-on-github-marketplace\/\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub Marketplace<\/a> helps us with this task and allows you to easily check if we can trust the creator by marking the author as a \u201cVerified creator\u201d. Of course, this doesn\u2019t mean that we shouldn\u2019t use Actions without such an annotation, but for sure it is helpful.<\/p>\n\n\n\n<p>Another good practice is to keep your GitHub Actions up to regularly update GitHub Actions. Alternatively, you can just completely disable GitHub Actions. Of course, that is assuming you don\u2019t use it and don\u2019t plan on doing so. In turn, this will allow us to protect ourselves from accidentally or maliciously defining and launching an action that we do not want.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/gitprotect.io\/sign-up.html\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" width=\"1024\" height=\"536\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/03\/LinkedIn-ads-template-1024x536.png\" alt=\"Get free trial\" class=\"wp-image-2555\" style=\"width:512px;height:268px\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/03\/LinkedIn-ads-template-1024x536.png 1024w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/03\/LinkedIn-ads-template-300x157.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/03\/LinkedIn-ads-template-768x402.png 768w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/03\/LinkedIn-ads-template-400x209.png 400w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/03\/LinkedIn-ads-template.png 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\">Auditing repository access<\/h2>\n\n\n\n<p>In certain situations, organizations are required to provide auditors and\/or compliance teams with a transparent record of who has access to which resources across the organization. Keep in mind that with the growing number of repos, keeping up with collecting this data manually may be difficult. Thankfully, there is a solution to simplify this issue. You can take advantage of <a href=\"https:\/\/github.com\/marketplace\/actions\/membership-audit-action-for-enterprises-and-organizations\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">org-audit-action<\/a>, which is a GitHub Action that generates .csv and .json reports. These include details regarding access to repositories throughout all organizations in an enterprise. Such reports include: which users have access, what permissions those users have, and their login, full name, and optionally SAML identity of the user.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Traceability and issue branches<\/h2>\n\n\n\n<p>Organizations operating in highly regulated industries must implement end-to-end traceability for any changes that are being deployed to production. It\u2019s true that specific implementation procedures may vary due to, for example, tools that are being used. However, one thing remains the same &#8211; a traceable relationship must be established between a requirement, the code changes addressing it, the necessary approval steps, and the final deployment.<\/p>\n\n\n\n<p>Using GitHub Actions can help you automate these processes. <a href=\"https:\/\/docs.github.com\/en\/get-started\/using-github\/github-flow\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">GitHub flow<\/a> allows for short-lived, focused feature branches. These align with the aforementioned end-to-end traceability requirements. A common practice in the industry is to generate a branch for each of the requirements and use a standard syntax that should include a reference to the requirement\u2019s unique identifier. Now, the create-issue-branch action actually enables you to create branches directly from a GitHub issue. Using this functionality allows you to:\u00a0<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set the branch name<\/li>\n\n\n\n<li>Trigger the workflow on issue assignment and\/or on use of a slash command in a comment<\/li>\n\n\n\n<li>Customize the response content<\/li>\n\n\n\n<li>Open a draft pull request (PR) automatically linked to your issue<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">The need for linked issues<\/h3>\n\n\n\n<p>As you may know, pull requests are a crucial aspect, connecting different areas of the development process. This includes, among others, issues, code reviews and CI\/CD. Therefore, this makes it perfectly suitable for demonstrating traceability. To put it simply, all changes must be linked to a requirement &#8211; and in turn, all PRs must have a linked issue. You can make use of <a href=\"https:\/\/github.com\/marketplace\/actions\/verify-linked-issue\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">verify-linked-issue<\/a> action, that guarantees a PR is linked to an issue, and if it is not &#8211; it fails the check. Using this method you can prevent unlinked pull requests from any merging processes, and further support compliance with traceability standards or regulations.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">An extra security measure &#8211; backup &amp; DR<\/h2>\n\n\n\n<p>For complete security it is essential to implement a dedicated <a href=\"https:\/\/gitprotect.io\/github.html\" target=\"_blank\" rel=\"noreferrer noopener\">backup &amp; DR solution<\/a> across your organization. Make sure that your software covers all the tools and systems that are being used by your teams.<br>An efficient <a href=\"https:\/\/gitprotect.io\/blog\/github-backup-best-practices\/\" target=\"_blank\" rel=\"noreferrer noopener\">backup strategy<\/a> should have a backup scheduler, strong encryption, replication, flexible restore and recovery options as well as support for a range of tools and platforms for backup, restore and recovery processes. Remember, you as the user are responsible for securing your accounts, according to the shared responsibility model.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"summary\">Summary<\/h2>\n\n\n\n<p>Before starting to use Actions, or when we want to improve the already existing due to security and compliance reasons, there are two things to keep in mind. <strong>One is to take some GitHub Actions tutorials<\/strong>. GitHub itself provides nice documentation and a free course for this feature. I recommend that even if you&#8217;ve already used Actions, it&#8217;s worth refreshing and broadening your knowledge.<\/p>\n\n\n\n<p><a href=\"https:\/\/gitprotect.io\/sign-up.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>[FREE TRIAL] Ensure compliant GitHub backup and recovery with a 14-day trial<\/strong><\/a><strong>\u00a0\ud83d\ude80<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/calendly.com\/d\/3s9-n9z-pgc\/gitprotect-live-demo\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>[CUSTOM DEMO] Let\u2019s talk about how backup &amp; DR software for GitHub can help you mitigate the risks<\/strong><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>First of all, let\u2019s clarify what GitHub Actions actually is and what it has to do with security and compliance. In short, it is a feature used for workflow automation. It is a continuous integration and continuous delivery platform that allows you to automate your build, test, and deployment pipeline. Like any tool of this type, it permits you to run Actions triggered by a change in the repository, for example, a merged pull request.<\/p>\n","protected":false},"author":6,"featured_media":2365,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-2364","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-github","post--single"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>GitHub Actions - How to Use It for Security and Compliance Needs - 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\/github-actions-how-to-use-it-for-security-and-compliance-needs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GitHub Actions - How to Use It for Security and Compliance Needs - Blog | GitProtect.io\" \/>\n<meta property=\"og:description\" content=\"First of all, let\u2019s clarify what GitHub Actions actually is and what it has to do with security and compliance. In short, it is a feature used for workflow automation. It is a continuous integration and continuous delivery platform that allows you to automate your build, test, and deployment pipeline. Like any tool of this type, it permits you to run Actions triggered by a change in the repository, for example, a merged pull request.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/\" \/>\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=\"2022-02-02T14:07:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-07T11:04:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/02\/Atoms-szablony.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=\"Tomasz Lisowski\" \/>\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=\"Tomasz Lisowski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/\"},\"author\":{\"name\":\"Tomasz Lisowski\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/9437be55e0e82150a20247f63e2fef79\"},\"headline\":\"GitHub Actions &#8211; How to Use It for Security and Compliance Needs\",\"datePublished\":\"2022-02-02T14:07:49+00:00\",\"dateModified\":\"2025-03-07T11:04:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/\"},\"wordCount\":2006,\"publisher\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/02\/Atoms-szablony.png\",\"articleSection\":[\"GitHub\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/\",\"url\":\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/\",\"name\":\"GitHub Actions - How to Use It for Security and Compliance Needs - Blog | GitProtect.io\",\"isPartOf\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/02\/Atoms-szablony.png\",\"datePublished\":\"2022-02-02T14:07:49+00:00\",\"dateModified\":\"2025-03-07T11:04:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#primaryimage\",\"url\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/02\/Atoms-szablony.png\",\"contentUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/02\/Atoms-szablony.png\",\"width\":1200,\"height\":600,\"caption\":\"GitHub Actions\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/gitprotect.io\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GitHub Actions &#8211; How to Use It for Security and Compliance Needs\"}]},{\"@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\/9437be55e0e82150a20247f63e2fef79\",\"name\":\"Tomasz Lisowski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/05\/tomasz-lisowski_avatar-96x96.jpg\",\"contentUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/05\/tomasz-lisowski_avatar-96x96.jpg\",\"caption\":\"Tomasz Lisowski\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/tomasz-lisowski-01366a75\/\"],\"url\":\"https:\/\/gitprotect.io\/blog\/author\/tomasz-lisowski\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"GitHub Actions - How to Use It for Security and Compliance Needs - 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\/github-actions-how-to-use-it-for-security-and-compliance-needs\/","og_locale":"en_US","og_type":"article","og_title":"GitHub Actions - How to Use It for Security and Compliance Needs - Blog | GitProtect.io","og_description":"First of all, let\u2019s clarify what GitHub Actions actually is and what it has to do with security and compliance. In short, it is a feature used for workflow automation. It is a continuous integration and continuous delivery platform that allows you to automate your build, test, and deployment pipeline. Like any tool of this type, it permits you to run Actions triggered by a change in the repository, for example, a merged pull request.","og_url":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/","og_site_name":"Blog | GitProtect.io","article_publisher":"https:\/\/www.facebook.com\/XoperoSoftware\/","article_published_time":"2022-02-02T14:07:49+00:00","article_modified_time":"2025-03-07T11:04:10+00:00","og_image":[{"width":1200,"height":600,"url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/02\/Atoms-szablony.png","type":"image\/png"}],"author":"Tomasz Lisowski","twitter_card":"summary_large_image","twitter_creator":"@GitProtectio","twitter_site":"@GitProtectio","twitter_misc":{"Written by":"Tomasz Lisowski","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#article","isPartOf":{"@id":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/"},"author":{"name":"Tomasz Lisowski","@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/9437be55e0e82150a20247f63e2fef79"},"headline":"GitHub Actions &#8211; How to Use It for Security and Compliance Needs","datePublished":"2022-02-02T14:07:49+00:00","dateModified":"2025-03-07T11:04:10+00:00","mainEntityOfPage":{"@id":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/"},"wordCount":2006,"publisher":{"@id":"https:\/\/gitprotect.io\/blog\/#organization"},"image":{"@id":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#primaryimage"},"thumbnailUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/02\/Atoms-szablony.png","articleSection":["GitHub"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/","url":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/","name":"GitHub Actions - How to Use It for Security and Compliance Needs - Blog | GitProtect.io","isPartOf":{"@id":"https:\/\/gitprotect.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#primaryimage"},"image":{"@id":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#primaryimage"},"thumbnailUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/02\/Atoms-szablony.png","datePublished":"2022-02-02T14:07:49+00:00","dateModified":"2025-03-07T11:04:10+00:00","breadcrumb":{"@id":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#primaryimage","url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/02\/Atoms-szablony.png","contentUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/02\/Atoms-szablony.png","width":1200,"height":600,"caption":"GitHub Actions"},{"@type":"BreadcrumbList","@id":"https:\/\/gitprotect.io\/blog\/github-actions-how-to-use-it-for-security-and-compliance-needs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/gitprotect.io\/blog\/"},{"@type":"ListItem","position":2,"name":"GitHub Actions &#8211; How to Use It for Security and Compliance Needs"}]},{"@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\/9437be55e0e82150a20247f63e2fef79","name":"Tomasz Lisowski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/05\/tomasz-lisowski_avatar-96x96.jpg","contentUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/05\/tomasz-lisowski_avatar-96x96.jpg","caption":"Tomasz Lisowski"},"sameAs":["https:\/\/www.linkedin.com\/in\/tomasz-lisowski-01366a75\/"],"url":"https:\/\/gitprotect.io\/blog\/author\/tomasz-lisowski\/"}]}},"_links":{"self":[{"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts\/2364","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\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/comments?post=2364"}],"version-history":[{"count":8,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts\/2364\/revisions"}],"predecessor-version":[{"id":6375,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts\/2364\/revisions\/6375"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/media\/2365"}],"wp:attachment":[{"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/media?parent=2364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/categories?post=2364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/tags?post=2364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}