Are you looking for a simpler, more efficient way to author infrastructure resources in Azure?
If so, youβre in luck. Azure Bicep is here to help. Bicep is a new domain-specific language (DSL) for deploying resources in Azure. Itβs also a much cleaner, more concise language than ARM JSONβcloud admins and DevOps professionals, rejoice!
Every seasoned IT professional knows that sensitive information should not be exposed as a clear text on any code. This is especially true for infrastructure-as-code (aka, IaC) scenarios where passwords and keys are part of the deployment.
One way to stay compliant in accomplishing this goal is the integration of an Azure Key Vault service into your deployment code. This Azure security service is primarily intended to store sensitive information like password, keys, certificates, connections, etc.
In this post, we will look into two different ways how we could integrate Azure Key Vault services in our Azure Bicep code.
Option – 1: Using getSecret() function
Our first option is to delegate this important work to a getSecret() function. This option could be used with an existing Azure Key Vault resource that is declared in your Azure Bicep code.
Let’s look into an example where an existing Azure Key Vault service is referenced to provide administrative password for SQL server deployment.
This sample Bicep code is using sqldb.bicep file as a module, where parameters; such as sqlServerName and adminLogin are passed through with a secret name of ExamplePassword.
The ExamplePassword secret name should be already set and ready in the referenced Key Vault service above. Here is the view of this secret on Azure portal.
Let’s have a quick view into the sqldb.bicep file, as it is referenced in the main Bicep file.
Now, let’s deploy these resources with a secret value from Key Vault resource that has a secret name ExamplePassword.
What happened? I am getting an error on my first deployment execution π
Upon carefully analyzing error, I see the following reason for this error:
At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.”,”details”:[{“code”:”RegionDoesNotAllowProvisioning”,”message”:”Location ‘East US 2’ is not accepting creation of new Windows Azure SQL Database servers at this time.
Azure deployment error
Based on the error message, we change the location to eastus and re-run the script. Now, we got the following positive result in console and portal:
Next, we will attempt to login into a SQL Server instance. A successful login will look like the following screen:
Important Note:
If you are getting an error during the login then try to check the following steps:
adminLogin name is entered correctly
your IP address is added to the SQL server firewall rules
grab a cup of coffee and check back in 5 minutes
Description of a typical login error into a SQL server instance is provided below. I checked the firewall rules and made a cup of coffee => before getting a successful log-in π
Option -2: Referencing as a secretName in parameter
The second option is pretty straightforward, if you have already used it on ARM template deployments.
We just need to reference Azure Key Vault secret like in the following example:
Using a parameter file and referencing the Key Vault secretName will do the trick in extracting the value and provisioning your resource.
Let’s run the bicep file that deploys multiple RGs and an Azure VM that uses VMPassword secret.
A successful deployment provisions following RG with the VM resources:
Next, we should smoke test our deployment by locating the resource group “rg-demo-vm-1116” and using deployment parameters to RDP into Windows server:
Finally, we are able to see that secret and admin user name pair worked as expected
Summary
In this post, we looked into two available options that harden our infrastructure code by removing hard-coded sensitive information and replacing it with Azure Key Vault reference. Thus, avoiding any potential leaks of passwords, secrets, etc.
IMHO, first option is better than the later one, because it does not expose subscription id and other small details.
I am very excited to see you all in the next Omaha Azure User Group meetup. This time we will speak about the latest advancements and use cases you could apply in your Azure resource authoring toolkit.
As it was the case last year,Β Microsoft IgniteΒ is back and held digitally free of charge, during Nov 2-4 π π
Microsoft Ignite is a signature event and held virtually for a global audience across a variety of industries to experience the latest and greatest technologies. It is an event where you could get a sneak peek at new products and services that will be coming in the future.
Cloud Skills Challenge
This year you could choose from 12 tech challenges and select the one that is right for you. Once you complete that challenge you will earn a free Microsoft Certification exam that can be applied to your choice from a select list of options:
Azure Developer Challenge
Azure Admin Challenge
Identity + Information Protection Challenge
Teams Admin Challenge
Teams Voice Engineer Challenge
Azure Database Admin Challenge
Desktop and Device Management Challenge
Windows Server Hybrid Admin Challenge
Dynamics 365 Sales Consultant Challenge
Dynamics 365 Supply Chain Mgmt Challenge
Power Platform Developer Challenge
Security Operations Analyst Challenge
When does the challenge begin?
The listed challenges will begin on November 2, 2021 and end on November 30, 2021. You can start your registration here to join the challenge.
What happens when I complete my Cloud Skills challenge?
If you complete your challenge before it ends, one Microsoft Certification exam will be associated with your Learn profile on December 7, 2021. You will be notified via email when it becomes available.
What are the Terms and Conditions?
Check out the Official rules; including Terms and Conditions with FAQ in this web page.
Summary
Thatβs it friends, buckle up to complete your challenge before Nov 30, 2021 to earn new skills and receive a complementary Azure exam award π.
Good Luck π€ in your new Cloud Skills Challenge !
As you may know, it is that time of a year when great content will be coming to the town! You could enjoy and learn throughout the month of December, as people behind the #festivetechcalendar will be bringing you lots of new content from different communities and people around the globe.
This year, I have submitted two sessions and have been nicely surprised yesterday. Both sessions have been accepted and I am looking forward to deliver following sessions for the community:
Session # 1: What you need to know about Azure AD security defaults?
In this session above, we will discuss about how to get started with Azure security on right foot and its challenges. We will focus on importance of a strong Identity and Access in any cloud solution that we are creating for our customers. One simple way to get started is review and adjustment of security default options in Azure AD. We will also look into the set of practices to get you started with Azure AD setup and learn about the benefits of Azure Security Benchmark.
Session # 2: All you need to know about Azure Bicep configurations
In the second session, we will talk about Azure Bicep – a new language that aims to ease Azure resource authoring and management. This new language comes with a powerful VS Code extension and config file options. In this session, we will unveil dozens of powerful features in our config file to suit your style of coding on VS Code and cheer up our productivity skills. We will apply our fresh skills by creating several Bicep demos in the process.
Conclusion
I sincerely hope that these sessions will spark your interest and I am looking forward to see you all during this event. But most importantly, I hope you could have lots of fun during this festive month.
Stay tuned for more Azure AD, Automation & Security related posts.