+ All Categories
Home > Documents > Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code...

Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code...

Date post: 22-May-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
34
Transcript
Page 1: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access
Page 2: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

KatyShimizu

SoftwareEngineerII,AzureFunctions

@[email protected]

Page 3: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

The“Evolution”ofApplicationPlatforms

Page 4: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

Whatisserverless?

$

Page 5: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

Focus

Efficiency

Flexibility

Whatarethebenefits?

Page 6: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access
Page 7: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

SamplescenariosforFunctions

Web/Mobile

IoT-connected

Real-time

Automation

Page 8: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

FullintegrationwithAzureecosystem

Page 9: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

Functionseverywhere

Platform

Applicationdelivery

Operatingsystem

●●● ●●●●●●

+

https://github.com/azure/azure-functions-host(+otherrepos)

AzureFunctionshostruntime

AzureFunctionsCoreTools

AzureFunctionsbaseDockerimage

AzureFunctions.NETDockerimage

AzureFunctionsNodeDockerimage ●●●

Page 10: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

Languageoptions

PublicpreviewNew!

Moreontheway!

Generallyavailable Privatepreview

Page 11: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

AzureFunctions

Page 12: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

Bindingsandintegrations

Page 13: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access
Page 14: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

Functionseverywhere

Platform

Applicationdelivery

Operatingsystem

●●● ●●●●●●

+

https://github.com/azure/azure-functions-host(+otherrepos)

AzureFunctionshostruntime

AzureFunctionsCoreTools

AzureFunctionsbaseDockerimage

AzureFunctions.NETDockerimage

AzureFunctionsNodeDockerimage ●●●

Page 15: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

AzureFunctionsHostingOptions

Page 16: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

AzureFunctionsHostingOptions

Page 17: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access
Page 18: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

Thesharedresponsibilitymodel

On-prem

IaaS

PaaS

SaaS

Serverless

Physicalsecurity

Dataclassification

Identity&access

management

Operatingsystem

Networkcontrols

Hostinfrastructure

Clientendpoints

Applicationlogic

Logicalapplicationserver

Cloudprovider Cloudcustomer

Page 19: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

Secretsmanagementconst msRestAzure = require('ms-rest-azure');const KeyVault = require('azure-keyvault');const vaultUri = process.env['GITHUB_SECRET_URI'];// Value looks like: 'https://foo.vault.azure.net/secrets/gh’

//... Getting the event

let kvToken = msRestAzure.loginWithAppServiceMSI({resource: 'https://vault.azure.net'

});

let keyVaultClient = new KeyVault.KeyVaultClient(kvToken);keyVaultClient.getSecret(vaultUri).then(function (secret){

var githubHeader = 'Basic ' + secret;//... Call GitHub

});

Page 20: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

Comingsoon:KeyVaultreferences

Gets secrets out of App Settings and into secrets management

Leverages the managed identity of your function app

Versions will be required at initial preview (goal of auto-rotation)

@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/mysecretversion)

Foo:mysecretFoo:mysecret

Foo:mysecretFoo:reference

Foo:mysecret

Page 21: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

ManagedidentitiesforAzureFunctions

� Keep credentials out of code

� Auto-managed identity in Azure AD for Azure resource

� Use local token endpoint to get access tokens from Azure AD

� Direct authentication with services, or retrieve creds from Azure Key Vault

Azure Functions

Azure Service(e.g., ARM, Key Vault)Your code

Local token service

Credentials

1

2

3

Azure (inject and roll credentials)

Page 22: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

Repo1

Repo2

●●●

Groupingandpermissions

Functionapp1

ReaderfunctionA

WriterfunctionB

WriterfunctionC

Functionapp2

Permissiontowrite

PermissiontoreadPermissiontowrite

Functions Configuration

WriterfunctionBWriterfunctionC

Functions Configuration

Page 23: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

module.exports = function (context, req) {if (req.body && req.body.name)) {

context.res = {status: 202

};context.bindings.outQueueMessage = {

action: "delete",target: req.body.name

};}else {

context.res = {status: 400,body: "Please pass a name in the request body"

};}context.done();

};

Spotthevulnerability!

Page 24: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

var Connection = require('tedious').Connection; var config = {

//... Get from env vars};

var connection = new Connection(config);connection.on('connect', function(err) {

console.log("Connected");});

//...

module.exports = function (context, myQueueItem) {if (myQueueItem.action === "delete") {

let request = new Request("DELETE FROM Inventory WHERE ItemName='" + myQueueItem.target + "';", function(err) { if (err) {

console.log(err);} }); connection.execSql(request);

}context.done();

};

Meanwhile,downstream…

Page 25: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

InputsANDoutputs

Sanitization

Permissions

Scalability

TTAmIgrantingproperrolesand

permissions?AmIenforcingleastprivilege?

AmIapplyingproperauthorizationchecks?

Canmydownstreamresourceskeepupwithmyscale?

Canmyappscalewellinresponsetonewevents?

AmIvalidatinginputsandpreventinginjectionattacks? AmIvalidatingoutputs?

Page 26: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

Serverlesssecuritybestpractices

• StandardPaaS/webappsecurityisstillamust-have• Newsecuritytoolingoptionsneeded

• Moresecrets,moresecretmanagement• Permissionsandgrouping– rememberleastprivilege• Mindbothinputsandoutputs– theappisonlyassecureasitsweakestlink

• Networkingsolutionsneeddevelopment,but…

Page 27: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access
Page 28: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

“Hello MDC!”[“Hello MDC!”]

OrchestratorFunction

ActivityFunction

ExecutionHistory

var outputs = new List<string>();

outputs.Add(await context.CallActivityAsync<string>(“Hello”, “MDC”));

return outputs;

OrchestratorFunction

?

ActivityFunction

“Hello MDC!”

OrchestratorStarted

ExecutionStarted

TaskScheduled,Hello,“MDC”

OrchestratorCompleted

TaskCompleted,“HelloMDC!”

OrchestratorStarted

ExecutionCompleted,["HelloMDC!"]

OrchestratorCompleted

HistoryTable

Page 29: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access
Page 30: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access
Page 31: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

Serverlesssecuritybestpractices

• StandardPaaS/webappsecurityisstillamust-have• Newsecuritytoolingoptionsneeded

• Moresecrets,moresecretmanagement• Permissionsandgrouping– rememberleastprivilege• Mindbothinputsandoutputs– theappisonlyassecureasitsweakestlink

• Networkingsolutionsneeddevelopment,but…

Page 32: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access
Page 33: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

InnerandOuterLoopDevelopment

Page 34: Katy Shimizu - Ilm...Managed identities for Azure Functions Keep credentials out of code Auto-managed identity in Azure AD for Azure resource Use local token endpoint to get access

AvailabletoolsofAzureFunctions


Recommended