Support for Azure AD user creation on behalf of Azure AD Applications for Azure SQL DB

Support for Azure AD user creation on behalf of Azure AD Applications for Azure SQL DB

This article is contributed. See the original author and article here.

We are announcing a general availability for Azure AD user creation support for Azure SQL Database on behalf of Azure AD Applications (service principals). See Azure Active Directory service principal with Azure SQL.



What support for Azure AD user creation on behalf of Azure AD Applications means?


Azure SQL Database and SQL Managed Instance support the following Azure AD objects: 



  1. Azure AD users (managed, federated and guest) 

  2. Azure AD groups (managed and federated) 

  3. Azure AD applications  


For more information on Azure AD applications, see Application and service principal objects in Azure Active Directory  and Create an Azure service principal with Azure PowerShell. 


Formerly, only SQL Managed Instance supported the creation of those Azure AD object types on behalf of an Azure AD Application (using service principal). Support for this functionality in Azure SQL Database is now generally available.


This functionality is useful for automated processes where Azure AD objects are created and maintained in Azure SQL Database without human interaction by Azure AD applications. Since service principals could be an Azure AD admin for SQL DB as part of a group or an individual user, automated Azure AD object creation in SQL DB can be executed. This allows for a full automation of a database user creation. This functionality is also supported for Azure AD system-assigned managed identity and user-assigned managed identity that can be created as users in SQL Database on behalf of service principals (see the article, What are managed identities for Azure resources?).


 


Prerequisites


To enable this feature, the following steps are required:


1)   Assign a server identity (a system managed identity) during SQL logical server creation or after the server is created.


      See the PowerShell example below:



  • To create a server identity during the Azure SQL logical server creation, execute the following command:  


         New-AzSqlServer -ResourceGroupName <resource group>
         -Location <Location name> -ServerName <Server name>
         -ServerVersion “12.0” -SqlAdministratorCredentials (Get-Credential)
         -AssignIdentity  
         (See the New-AzSqlServer command for more details)  


 



  • For existing Azure SQL logical servers, execute the following command:


         Set-AzSqlServer -ResourceGroupName <resource group>
         -ServerName <Server name> -AssignIdentity 
    
         (See the  Set-AzSqlServer command for more details)  
         To check if a server identity is assigned to the Azure SQL logical 
         server, execute the following  command:
         Get-AzSqlServer -ResourceGroupName <resource group> 
         – ServerName <Server name> 
         (See the Get-AzSqlServer command for more details)


 


2)   Grant the Azure AD “Directory Readers” permission to the server identity
      created above 
     (For more information, see Provision Azure AD admin (SQL Managed Instance) 


 


How to use it


Once steps 1 and 2 are completed, an Azure AD application with the right permissions can create an Azure AD object (user/group or service principal) in Azure SQL DB. For more information, see the step-by-step tutorial doc
(see Tutorial: Create Azure AD users using Azure AD applications ).


 


Example


Using SMI (System-assigned Managed Identity) set up as an Azure AD admin for SQL DB,
create an Azure AD application as a SQL DB user.


 


Preparation


Enable steps 1 and 2 indicated above for the Azure SQL logical server



  • In the example below, the server name is ‘testaadsql’

  • The user database created under this serve is ‘testdb’




  • Copy the display name of the application


    • In the example below the app name is ‘myapp


  • Using the Azure portal, assign your SMI (display name mytestvm) as an Azure AD admin for the Azure SQL logical server  (see the screenshot below).


Picture1.png


 



  • Create Azure AD application user in SQL DB on behalf of the SMI


  • To check that the user ‘myapp’ was created in the database ‘testdb’ you can execute the T-SQL command select * from sys.database_principals.


PowerShell Script


# PS script creating a SQL user myapp from an Azure AD application on behalf of SMI “mytestvm”
#  that is also set as Azure AD admin for SQ DB
# Execute this script from the Azure VM with SMI name ‘mytestvm’   
# Azure AD application – display name  ‘myapp’
# This is the user name that is created in SQL DB ‘testdb’ in the server  ‘testaadsql’


# Metadata service endpoint for SMI, accessible only from within the VM:


$response = Invoke-WebRequest -Uri


 ‘http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F‘ -Method GET -Headers @{Metadata=”true”}  


$content = $response.Content | ConvertFrom-Json
$AccessToken = $content.access_token


# Specify server name and database name
# For the server name, the server identity must be assigned and “Directory Readers”
# permission granted to the identity


$SQLServerName = “testaadsql”
$DatabaseName = ‘testdb’


$conn = New-Object System.Data.SqlClient.SQLConnection
$conn.ConnectionString = “Data Source=$SQLServerName.database.windows.net;Initial Catalog=$DatabaseName;Connect Timeout=30”
$conn.AccessToken = $AccessToken


$conn.Open()


# Create SQL DB user [myapp] in the ‘testdb’ database
$ddlstmt = ‘CREATE USER [myapp] FROM EXTERNAL PROVIDER;’


$command = New-Object -TypeName System.Data.SqlClient.SqlCommand($ddlstmt, $conn)      
Write-host ” “
Write-host “SQL DDL command was executed”
$ddlstmt
Write-host “results”
$command.ExecuteNonQuery()
$conn.Close() 


 


For more information see


 



For feedback/questions on this preview feature, please reach out to the SQL AAD team at SQLAADFeedback@Microsoft.com  


 


 


 


 


 

General availability of new capabilities in Azure Defender – RSA 2021

This article is contributed. See the original author and article here.

As we continue our journey to provide world class threat protection for our customers, we announce general availability of our cloud-native breadth threat protection capabilities, deliver better integration with Microsoft’s threat protection portfolio and expand our threat protection for multi-cloud scenarios.


At RSA this year we are happy to announce general availability for our cloud breadth threat protection solutions: Azure Defender for DNS and Azure Defender for Resource Manager. By detecting suspicious management operations and DNS queries, these cloud-native agentless solutions are helping organizations protect all their cloud resources connected to the Azure DNS & Azure management layer from attacks. Together these new solutions provide breadth protection for your entire Azure environment, which is complementary to our existing Azure Defender in-depth protection for popular Azure workloads.


We are also announcing general availability of built-in and custom reports in Security Center: you can leverage built-in reports created as Azure Workbooks for tasks like tracking your Secure Score over time, vulnerability management, and monitoring missing system updates. In addition, you can create your own custom reports on top of Security Center data using Azure Workbooks or pick up workbook templates created by our community, share those across your organization and leverage to relay security status and insights across the organization.  Learn more in Create rich, interactive reports of Security Center data.


 


At RSA, we are also introducing new capabilities to create a seamless experience between Azure Defender and Azure Sentinel. The enhanced Azure Defender connector, makes it easier to connect to Azure Sentinel by allowing to turn on Azure Defender for some of the subscriptions or for the entire organization from within the connector. We are also combining alerts from Azure Defender with the new raw log connectors for Azure resources in Azure Sentinel. This allows security teams to investigate Azure Defender alerts using raw logs in Azure Sentinel. We also added new recommendations in Azure Security Center to help deploy these log connectors at scale for an entire organization.


 


Today’s hybrid work environment spans multi-platform, multi-cloud, and on-premises. According to Gartner 2/3 of customers are multi-cloud.  We recently extended the multi-cloud support in Azure Defender to include not just servers and SQL but also Kubernetes – and all using Azure Arc.  Azure Security Center remains the only security portal from a cloud vendor with multi-cloud support including AWS and GCP.


 


As always – don’t forget to enable Azure Defender for your cloud services and especially for virtual machines, storage, and SQL databases.  Make sure you are actively working to improve your   to improve your security posture and please continue to reach out with feedback.


 

MidDay Cafe Episode 9 – MBAS, Single Platform, VIVA Connections

MidDay Cafe Episode 9 – MBAS, Single Platform, VIVA Connections

This article is contributed. See the original author and article here.

HLS Mid-Day Café3.pngMidDay Cafe Episode 9 – MBAS, Single Platform, VIVA Connections


In this episode of MidDay Cafe host Michael Gannotti is joined by Microsoft’s Kendra Burgess and Sue Vencill as they discuss the Microsoft Business Application Summit (MBAS)), Why I Came to Microsoft/Single Platform, and Next Generation Intranets with Microsoft VIVA Connections. 



Resources:



Keep up to date with MidDay Café:



Thanks for visiting – Michael Gannotti   LinkedIn | Twitter


Michael GannottiMichael Gannotti


 

Developer Experiences – Manage Scanning Data Plane using REST APIs.

Developer Experiences – Manage Scanning Data Plane using REST APIs.

This article is contributed. See the original author and article here.

We are happy to announce that REST APIs for scanning data plane are now released. Software engineers or developers in your organization can now call these APIs to register data sources, set up scans and classifications programmatically to integrate with other systems or products in your company.


 


Purview Scaning Data Plane Endpoints


You need to have the purview account name to call scanning APIs. Below is how the endpoint will look:


https://{your-purview-account-name}.scan.purview.azure.com


 


Set up authentication using service principal.


To call the scanning APIs, the first thing you need to do is to register an application and create a client secret for that application in Azure Active Directory.  When you register an application a service principal is automatically created in your tenant. For more information on how to create a service principal (application) and client secret, please refer here.


 


Once service principal is created, you need to assign ‘Data source Admin’ role of your purview account to the service principal created above. The below steps need to be followed to assign role to establish trust between the service principal and purview account.



  1. Navigate to your Purview account.

  2. On the Purview account page, select the tab Access control (IAM)

  3. Click + Add.

  4. Select Add role assignment.

  5. For the Role select Purview Data Source Administrator from the drop down.

  6. For Assign access to leave the default, User, group, or service principal.

  7. For Select enter the name of the previously created service principal you wish to assign and then click on their name in the results pane.

  8. Click on Save.


You’ve now configured the service principal as an application administrator, which enables it to send content to the scanning APIs. Learn about roles here.


 


Get Token


You can send a POST request to the following URL to get access token.


https://login.microsoftonline.com/{your-tenant-id}/oauth2/token


The following parameters needs to be passed to the above URL.



  • client_id:  client id of the application registered in Azure Active directory and is assigned ‘Data Source Admin’ role for the Purview account.

  • client_secret: client secret created for the above application.

  • grant_type: This should be ‘client_credentials’.

  • resource: This should be ‘https://purview.azure.net’


Naga_Yenamandra_0-1620759706609.png


 


Figure1: Screenshot showing a sample response in Postman.


 


Scanning Data Plane REST APIs


Once you have followed all the above steps and have received access token you can now call various scanning APIs programmatically. The different types of entities you can interact with are listed below:



  • Classification Rules

  • Data Sources

  • Key Vault Connections

  • Scans and scan related functionality like triggers and scan rule sets.


The below examples explains the APIs you need to call to configure a data source , set up and run a scan for the data source but for complete information on all the REST APIs supported by scanning data plane refer here


 


1. To create or update a data source using APIs the following REST API can be leveraged:


PUT {Endpoint}/datasources/{dataSourceName}?api-version=2018-12-01-preview


 


You can register an Azure storage data source with name ‘myStorage’ by sending a PUT request to the following URL


{Endpoint}/datasources/myStorage?api-version=2018-12-01-preview with the below request body:


 


{


  “name”: “myStorage”,


  “kind”: “AzureStorage”,


  “properties”: {


    “endpoint”: “https://azurestorage.core.windows.net/


  }


}


 


2. To create a scan for a data source already registered in Purview the following REST API can be leveraged:


PUT {Endpoint}/datasources/{dataSourceName}/scans/{scanName}?api-version=2018-12-01-preview


 


You can schedule a scan ‘myStorageScan’ using a credential ‘CredentialAKV’ and system scan rule set ‘AzureStorage’ for the already registered data source ‘myStorage’ by sending a PUT request to the following URL with the below request body:


{Endpoint}/datasources/myStorage/scans/myStorageScan?api-version=2018-12-01-preview


 


{


  “kind”: “AzureStorageCredential”,


  “properties”: {


    “credential”: {


      “referenceName”: “CredentialAKV”,


      “credentialType”: “AccountKey”


    },


    “connectedVia”: null,


    “scanRulesetName”: “AzureStorage”,


    “scanRulesetType”: “System”


  }


}


 


The above call with return the following response:


{


  “name”: “myStorageScan”,


  “id”: “datasources/myDataSource/scans/myScanName”,


  “kind”: “AzureStorageCredential”,


  “properties”: {


    “credential”: {


      “referenceName”: “CredentialAKV”,


      “credentialType”: “AccountKey”


    },


    “connectedVia”: null,


    “scanRulesetName”: “AzureStorage”,


    “scanRulesetType”: “System”,


    “workers”: null


  },


  “scanResults”: null


}


 


3. Once the scan is created you need to add filters to the scan which is basically scoping your scan or determining what objects should be included as part of scan. To create a filter, you can leverage the following REST API


PUT {Endpoint}/datasources/{dataSourceName}/scans/{scanName}/filters/custom?api-version=2018-12-01-preview


 


You can create a filter for the above scan ‘myStorageScan’ by sending a PUT request to the following URL with the below request body. This will create a scope to include folders /share1/user and /share1/aggregated and exclude folder /share1/user/temp/ as part of the scan.


{Endpoint}/datasources/myStorage/scans/myStorageScan/filters/custom?api-version=2018-12-01-preview


{


  “properties”: {


    “includeUriPrefixes”: [


      “https://myStorage.file.core.windows.net/share1/user“,


      “https://myStorage.file.core.windows.net/share1/aggregated


    ],


    “excludeUriPrefixes”: [


      “https://myStorage.file.core.windows.net/share1/user/temp


    ]


  }


}


 


The above call will return the following response:


{


  “name”: “custom”,


  “id”: “datasources/myStorage/scans/myStorageScan/filters/custom”,


  “properties”: {


    “includeUriPrefixes”: [


      “https://myStorage.file.core.windows.net/share1/user“,


      “https://myStorage.file.core.windows.net/share1/aggregated


    ],


    “excludeUriPrefixes”: [


      “https://myStorage.file.core.windows.net/share1/user/temp


    ]


  }


}


 


4.To run a scan, you need to use the following REST API


PUT {Endpoint}/datasources/{dataSourceName}/scans/{scanName}/runs/{runId}?api-version=2018-12-01-preview


 


You can now trigger the above scan ‘myStorageScan’ by sending a PUT request to the below URL. The runId is a guid.


{Endpoint}/datasources/myStorage/scans/myStorageScan/runs/138301e4-f4f9-4ab5-b734-bac446b236e7?api-version=2018-12-01-preview


 


The above call will return the following response:


{


  “scanResultId”: “138301e4-f4f9-4ab5-b734-bac446b236e7”,


  “startTime”: “2019-05-16T17:01:37.3089193Z”,


  “endTime”: null,


  “status”: “Accepted”,


  “error”: null


}


 


To learn more about Azure Purview, check out our full documentation today.


 


 

How hybrid customers can prepare for Skype for Business Online retirement

This article is contributed. See the original author and article here.

As the retirement of Skype for Business Online approaches, we want to help customers with hybrid deployments of Skype for Business (Server + Online) successfully plan for the changes ahead. This post provides guidance for upgrade readiness, post-retirement experiences for hybrid deployments, and transitioning on-premises users to Teams after Skype for Business Online retires.


 


How can hybrid customers prepare for Skype for Business Online retirement?
Hybrid customers must upgrade Skype for Business Online users to Teams Only or move them on-premises by July 31, 2021. For any users homed in Skype for Business Online, you’ll need to ensure the user’s mode is set to TeamsOnly, as some may be using Teams while homed in Skype for Business Online.


 


What if an organization needs to maintain an on-premises instance of Skype for Business?
Although we encourage organizations to adopt Teams to fully benefit from an expanded set of communications and collaboration experiences, those that require an on-premises deployment of Skype for Business may continue to use Skype for Business Server as the support lifecycle of Skype for Business Server is not impacted by the retirement of Skype for Business Online.


 


Post-retirement, hybrid organizations can have:



  • Users homed on-premises that use Teams, but not in TeamsOnly mode, and

  • Users that have been upgraded to Teams Only, whether from Skype for Business Server or Skype for Business Online


What can customers with hybrid Skype for Business configurations expect as Skype for Business Online retires?
If all Skype for Business Online users have already been upgraded to Teams Only, their experiences will not change as interop with Skype for Business Server will continue to work as it currently does.


 


If your organization still has users homed in Skype for Business Online, you may be scheduled for a Microsoft-assisted upgrade to transition remaining Skype for Business Online users to Teams. Scheduling notifications will be sent to customers with users homed in Skype for Business Online 90 days before these users are upgraded to Teams. Assisted upgrades will begin in August 2021.


 


Even after being scheduled for a Microsoft-assisted upgrade, we recommend customers upgrade remaining Skype for Business Online users to Teams Only themselves prior to their scheduled date to better control the timing of their upgrade.


 


Once a user has been upgraded to Teams Only, they:



  • Will receive all calls and chats in Teams.

  • Can only initiate calls and chats, and schedule new meetings in Teams. Attempts to open the Skype for Business client will be redirected to Teams.

  • Will be able to interoperate with other users who use Skype for Business Server.

  • Will be able to communicate with users in federated organizations.

  • Can still join Skype for Business meetings.

  • Will have their online meetings and contacts migrated to Teams.


Users homed online will now be in TeamsOnly mode, while users homed on Skype for Business Server will remain on-premises. Please see this blog post for more details about Microsoft assisted upgrades.


 


After Skype for Business Online retires, what is the path from Skype for Business Server to Teams?


After Skype for Business Online retires, organizations that plan to transition users from on-premises to the Teams cloud can still do so by following the Teams upgrade guidance. Skype for Business Server customers who haven’t done so must plan hybrid connectivity. Hybrid connectivity enables customers to move on-premises users to Teams and take advantage of Microsoft 365 cloud services. After establishing hybrid connectivity, on-premises users can be moved to Teams Only.


 


We are working to simplify how organizations move to Teams. When moving a user from Skype for Business Server to Teams, it will no longer be required to specify the ‘-MoveToTeams’ switch in ‘Move-CsUser’, to move users directly from on-premises to Teams Only. Currently if this switch is not specified, users transition from being homed in Skype for Business Server to Skype for Business Online, and their mode remains unchanged. After retirement, when moving a user from on-premises to the cloud with ‘Move-CsUser’, users will automatically be assigned TeamsOnly mode, and their meetings will be automatically converted to Teams meetings even if ‘-MoveToTeams’ is not specified. We expect to release this functionality before July 31, 2021.


 


Enable a full migration to the cloud


As the timing, technical requirements and economics make sense, Skype for Business Server customers may choose to make a full migration to Microsoft 365. But before decommissioning the on-premises Skype for Business deployment and removing any hardware, all users should be upgraded to Teams Only, and the on-premises deployment must be separated from Microsoft 365 by disabling hybrid. After this three-step process is complete, customers may decommission their Skype for Business Server.


 


Still need help?
Leverage resources including Microsoft Teams admin documentation, online upgrade guidance, and Teams upgrade planning workshops to help plan your path to Teams Only.


 


You can also reach out to your Microsoft account team, FastTrack (as eligible) or a Microsoft Solution Partner to assist with the process.


 


See you in Teams!