All Projects → Azure → devops-governance

Azure / devops-governance

Licence: MIT License
Example end-to-end Governance Model from CI/CD to Azure Resource Manager. Use this project to deploy example AAD, ARM and Azure DevOps resources to learn about e2e RBAC.

Programming Languages

HCL
1544 projects

Projects that are alternatives of or similar to devops-governance

azure-flutter-tasks
Easily build and deploy with latest Flutter build tasks for Azure DevOps Pipelines Tasks
Stars: ✭ 66 (-16.46%)
Mutual labels:  ci-cd, azure-devops, azure-pipelines
yamlizr
Azure DevOps Designer-to-YAML Pipeline CLI CodeGen Tool
Stars: ✭ 23 (-70.89%)
Mutual labels:  ci-cd, azure-devops, azure-pipelines
Cloudguardiaas
Check Point CloudGuard Network Security repository containing solution templates, Terraform templates, tools and scripts for deploying and configuring CloudGuard Network Security products.
Stars: ✭ 27 (-65.82%)
Mutual labels:  arm, azure, terraform
azure-devops-terraform
Recipe to deploy Azure Infrastructure with Terraform via Azure DevOps
Stars: ✭ 18 (-77.22%)
Mutual labels:  azure-devops, azure-pipelines
ParallelTestingSample-dotnet-core
Sample for running dotnet core tests in parallel across multiple agents in Azure DevOps
Stars: ✭ 19 (-75.95%)
Mutual labels:  azure-devops, azure-pipelines
AzureDevOpsPipelines-Templates
This project shows how to use YAML templates in Azure DevOps Pipelines.
Stars: ✭ 35 (-55.7%)
Mutual labels:  ci-cd, azure-devops
AzureChamp
A repository for Azure Champ program to train technical experts to get ready for Azure
Stars: ✭ 16 (-79.75%)
Mutual labels:  azure-active-directory, azure-devops
vsts-publish-adf
This extension adds Azure Data Factory release tasks to Azure Pipelines.
Stars: ✭ 23 (-70.89%)
Mutual labels:  azure-devops, azure-pipelines
vsts-mirror-git-repository
A straightforward utility to mirror one Git repository to another location
Stars: ✭ 22 (-72.15%)
Mutual labels:  azure-devops, azure-pipelines
azure-pipelines-tfvc-tasks
Azure Pipelines tasks for Team Foundation Version Control
Stars: ✭ 26 (-67.09%)
Mutual labels:  azure-devops, azure-pipelines
azure
VM-Series ARM Templates for Microsoft Azure
Stars: ✭ 87 (+10.13%)
Mutual labels:  arm, azure
pulumi-az-pipelines-task
Azure Pipelines task extension for running Pulumi apps.
Stars: ✭ 19 (-75.95%)
Mutual labels:  azure-devops, azure-pipelines
XamarinPipelineDemo
Demo and explanation on how to do several common tasks for Xamarin.Forms Android in an Azure DevOps pipeline on a Microsoft-hosted agent. Tasks include: build-based version, APK signing, publishing artifacts, unit tests, and UI tests (both via emulator in Azure DevOps and via real devices in App Center).
Stars: ✭ 23 (-70.89%)
Mutual labels:  azure-devops, azure-pipelines
jmeter-aci-terraform
Scalable cloud load/stress testing pipeline solution with Apache JMeter and Terraform to dynamically provision and destroy the required infrastructure on Azure.
Stars: ✭ 114 (+44.3%)
Mutual labels:  azure-devops, azure-pipelines
cake-vso
Cake integration for Azure DevOps.
Stars: ✭ 19 (-75.95%)
Mutual labels:  azure-devops, azure-pipelines
libnss-aad
A glibc NSS plugin that implements an Azure Active Directory service
Stars: ✭ 17 (-78.48%)
Mutual labels:  azure, azure-active-directory
VstsExtensions
Documentation and issue tracking for Microsoft Premier Services Visual Studio Team Services Extensions
Stars: ✭ 42 (-46.84%)
Mutual labels:  azure-devops, azure-pipelines
doing-cli
CLI tool to simplify the development workflow on azure devops
Stars: ✭ 19 (-75.95%)
Mutual labels:  azure, azure-devops
Azure Powershell
Microsoft Azure PowerShell
Stars: ✭ 2,873 (+3536.71%)
Mutual labels:  arm, azure
azure-pipelines-lighthouse
Embed Google Lighthouse HTML reports into Azure Pipelines
Stars: ✭ 37 (-53.16%)
Mutual labels:  azure-devops, azure-pipelines

Governance on Azure Demo - from DevOps to ARM

This demo project deploys Azure resources and bootstraps Azure DevOps projects to illustrate end-to-end RBAC, including best practices and pitfalls. It follows principles from Microsoft's Cloud Adoption Framework (CAF).

Status Description
CD - Build Status Deployment Azure Resources and Azure DevOps
Detect Drift - Build Status Detect Configuration Drift (scheduled nightly)

Contents

What is End to End Governance?

When developing a governance model for your organization, it is important to remember that Azure Resource Management (ARM) is only one way to manage resources.

End to End Governance

When introducing automation via CI/CD pipelines, be aware that the Role Based Access Control (RBAC) model must be applied at multiple layers. This code sample deploys many of these layers and show how they can be configured together in a unified governance model.

In a nutshell, you can achieve this by leveraging Azure Active Directory and connecting all role assignments (both Azure DevOps and ARM) to this single identity management plane.

Official Documentation

This repository features the code to deploy the infrastructure and bootstrap Azure DevOps. For more about the concept of end to end governance, please see:

Understanding this Demo

The Terraform Infrastructure as Code in this repository will bootstrap various resources for you:

  • Azure Resources (ARM)
  • Azure AD Groups
  • Service Principals
  • Azure DevOps Projects incl. Service Connections, Security Group Assignments, etc.

Random Generated Suffix

When run Terraform will create the following resources. Note: random suffix used to ensure globally unique names, e.g. u6t7 but are omitted here for clarity.

Azure AD Groups

The key to end to end governance is to have multiple role assignments (with different role definitions and different resource scopes to the same Azure AD groups) as illustrated below.

To understand the benefits, imagine if you had to remove a contractor after completion of a project. If you use the concept described in this project and in the accompanying official Microsoft documentation, you can remove their access from multiple environments and resources simply by removing their membership to AAD group(s).

Multiple Role Assignments

Note: the -all groups are currently not in use but was introduced to address a conceptual problem (see #12):

Group Name ARM Role Azure DevOps Role
fruits-all - -
fruits-devs Contributor Contributor
fruits-admins Owner Project Administrators
veggies-all - -
veggies-devs Contributor Contributor
veggies-admins Owner Project Administrators
infra-all - -
infra-devs Contributor Contributor
infra-admins Owner Project Administrators

In the future when we bootstrap the supermarket project, we will need the -all groups as well.

Azure DevOps Projects

The project structure illustrates different governance models and their trade-offs.

Preview of the Azure DevOps organization

Screenshot of the Azure DevOps organization created by this code sample. Icons by Smashicons not included.

  • "fruits" and "veggies" when isolated means less governance management - at the cost of less collaboration.
  • "supermarket" model prioritizes collaboration via shared Azure Boards - but requires more governance management, especially for repositories and pipelines.
Project Boards Repos Pipelines
project-fruits Yes Yes Yes
project-veggies Yes Yes Yes
collaboration Yes No No
central-it No Yes Yes
supermarket Yes Yes Yes

Azure Pipelines

  • Service Connection using Contributor Service Principal
  • Service Connection using Key Vault read-only Service Principal for Pipeline Secrets Integration

Note: At time of this writing there is no REST API (v6) for Key Vault Integration. Therefore it must be configured manually.

Azure Resource Groups as "Environments"

To reduce complexity for CI/CD automation of this open source repository, this project uses resource groups as a logical and security boundary for deployments.

  • fruits-dev-rg
  • fruits-prod-rg
  • veggies-dev-rg
  • veggies-prod-rg
  • infra-shared-rg

Be aware that in practice per Cloud Adoption Framework, these boundaries should be Azure Subscriptions, not Resource Groups.

Contributing

This demo was created with by the FastTrack engineer Julie Ng and based on previous experience as an Enterprise Architct and current experieince with Azure customers new to CI/CD and DevOps. After regularly breaking and fixing the demo in onboarding sessions, it was automated.

Learn more about FastTrack for Azure →

Code of Conduct

If you want to contribute, please first read the Microsoft Code of Conduct →

Bugs and Suggestions

The easiest way to contribute is to provide feedback.

Code Contributions

This project affects real Azure resources and leverages CI/CD to safeguard them. Therefore please read through all the sections below carefully for highest success of your contribution being accepted.

  • Use Conventional Commits

    Please use Conventional Commits so we can automate the Change Log. Thank you.

  • Create a Fork and Use small branches

    To get started, fork this repository. Please make your changes in your fork in a feature branch, ideally beginning with feat/* or fix/*

    Large Pull Requests can be a challenge to merge. Consider separating changes are you would into smaller bits like features and create separate pull requests for each.

  • Create a Pull Request

    Only Pull Requests with passing CI builds can be accepted for merging.

    When you are ready and checked you have met all code requirements described above, you can open a pull request. When you do so, a CI build should be automatically started. If you're having difficulty, please feel free to reach out for help by opening an issue or via Twitter @jng5.

License

This project is published under the MIT license. See LICENSE.md for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].