Skip to content

Commit a4438be

Browse files
committed
Integration test setup for AKV
1 parent 80062f8 commit a4438be

File tree

7 files changed

+53
-3
lines changed

7 files changed

+53
-3
lines changed

.github/infrastructure/conformance/azure/setup-azure-conf-test.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,8 @@ IOT_HUB_PUBSUB_CONSUMER_GROUP_VAR_NAME="AzureIotHubPubsubConsumerGroup"
181181

182182
KEYVAULT_CERT_NAME="AzureKeyVaultSecretStoreCert"
183183
KEYVAULT_CLIENT_ID_VAR_NAME="AzureKeyVaultSecretStoreClientId"
184+
KEYVAULT_SERVICE_PRINCIPAL_CLIENT_SECRET_VAR_NAME="AzureKeyVaultSecretStoreServicePrincipalClientSecret"
185+
KEYVAULT_SERVICE_PRINCIPAL_CLIENT_ID_VAR_NAME="AzureKeyVaultSecretStoreServicePrincipalClientId"
184186
KEYVAULT_TENANT_ID_VAR_NAME="AzureKeyVaultSecretStoreTenantId"
185187
KEYVAULT_NAME_VAR_NAME="AzureKeyVaultName"
186188

@@ -313,6 +315,15 @@ az keyvault set-policy --name "${KEYVAULT_NAME}" -g "${RESOURCE_GROUP_NAME}" --s
313315
# Other tests verifying managed identity will want to grant permission like so:
314316
# MSYS_NO_PATHCONV=1 az role assignment create --assignee-object-id "${MANAGED_IDENTITY_SP}" --assignee-principal-type ServicePrincipal --role "Azure Service Bus Data Owner" --scope "/subscriptions/${SUB_ID}/resourceGroups/${RESOURCE_GROUP_NAME}/providers/Microsoft.ServiceBus/namespaces/${SERVICE_BUS_NAME}"
315317

318+
# Creating service principal for service principal authentication with KeyVault
319+
AKV_SPAUTH_SP_NAME="${PREFIX}-akv-spauth-conf-test-sp"
320+
echo "Creating service principal ${AKV_SPAUTH_SP_NAME} for use with KeyVault ${KEYVAULT_NAME}"
321+
{ read AKV_SPAUTH_SP_CLIENT_ID ; read AKV_SPAUTH_SP_CLIENT_SECRET ; } < <(az ad sp create-for-rbac --name ${AKV_SPAUTH_SP_NAME} --skip-assignment --years 1 --query "[appId,password]" -otsv)
322+
323+
# Give the service principal read access to the KeyVault Secrets
324+
AKV_SPAUTH_SP_OBJECTID="$(az ad sp show --id ${AKV_SPAUTH_SP_CLIENT_ID} --query objectId -otsv)"
325+
az keyvault set-policy --name "${KEYVAULT_NAME}" -g "${RESOURCE_GROUP_NAME}" --secret-permissions get list --object-id "${AKV_SPAUTH_SP_OBJECTID}"
326+
316327
# Update service principal credentials and roles for created resources
317328
echo "Creating ${CERT_AUTH_SP_NAME} certificate ..."
318329
az ad sp credential reset --name "${CERT_AUTH_SP_NAME}" --create-cert --cert "${KEYVAULT_CERT_NAME}" --keyvault "${KEYVAULT_NAME}"
@@ -418,6 +429,13 @@ KEYVAULT_CLIENT_ID="$(az ad sp list --display-name "${CERT_AUTH_SP_NAME}" --quer
418429
echo export ${KEYVAULT_CLIENT_ID_VAR_NAME}=\"${KEYVAULT_CLIENT_ID}\" >> "${ENV_CONFIG_FILENAME}"
419430
az keyvault secret set --name "${KEYVAULT_CLIENT_ID_VAR_NAME}" --vault-name "${KEYVAULT_NAME}" --value "${KEYVAULT_CLIENT_ID}"
420431

432+
KEYVAULT_SERVICE_PRINCIPAL_CLIENT_ID=${AKV_SPAUTH_SP_CLIENT_ID}
433+
echo export ${KEYVAULT_SERVICE_PRINCIPAL_CLIENT_ID_VAR_NAME}=\"${KEYVAULT_SERVICE_PRINCIPAL_CLIENT_ID}\" >> "${ENV_CONFIG_FILENAME}"
434+
az keyvault secret set --name "${KEYVAULT_SERVICE_PRINCIPAL_CLIENT_ID_VAR_NAME}" --vault-name "${KEYVAULT_NAME}" --value "${KEYVAULT_SERVICE_PRINCIPAL_CLIENT_ID}"
435+
436+
KEYVAULT_SERVICE_PRINCIPAL_CLIENT_SECRET=${AKV_SPAUTH_SP_CLIENT_SECRET}
437+
echo export ${KEYVAULT_SERVICE_PRINCIPAL_CLIENT_SECRET_VAR_NAME}=\"${KEYVAULT_SERVICE_PRINCIPAL_CLIENT_SECRET}\" >> "${ENV_CONFIG_FILENAME}"
438+
az keyvault secret set --name "${KEYVAULT_SERVICE_PRINCIPAL_CLIENT_SECRET_VAR_NAME}" --vault-name "${KEYVAULT_NAME}" --value "${KEYVAULT_SERVICE_PRINCIPAL_CLIENT_SECRET}"
421439
# ------------------------------------
422440
# Populate Blob Storage test settings
423441
# ------------------------------------

.github/workflows/conformance.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ jobs:
113113
required-secrets: AzureServiceBusConnectionString
114114
- component: bindings.azure.storagequeues
115115
required-secrets: AzureBlobStorageAccessKey,AzureBlobStorageAccount,AzureBlobStorageQueue
116-
- component: secretstores.azure.keyvault
116+
- component: secretstores.azure.keyvault.certificate
117117
required-secrets: AzureKeyVaultName,AzureKeyVaultSecretStoreTenantId,AzureKeyVaultSecretStoreClientId
118118
required-certs: AzureKeyVaultSecretStoreCert
119119
EOF
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: dapr.io/v1alpha1
2+
kind: Component
3+
metadata:
4+
name: azurekeyvault-managed-identity
5+
spec:
6+
type: secretstores.azure.keyvault
7+
metadata:
8+
- name: vaultName
9+
value: ${{AzureKeyVaultName}}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: dapr.io/v1alpha1
2+
kind: Component
3+
metadata:
4+
name: azurekeyvault-service-principal
5+
spec:
6+
type: secretstores.azure.keyvault
7+
metadata:
8+
- name: vaultName
9+
value: ${{AzureKeyVaultName}}
10+
- name: azureTenantId
11+
value: ${{AzureKeyVaultSecretStoreTenantId}}
12+
- name: azureClientId
13+
value: ${{AzureKeyVaultSecretStoreServicePrincipalClientId}}
14+
- name: azureClientSecret
15+
value: ${{AzureKeyVaultSecretStoreServicePrincipalClientSecret}}

tests/config/secretstores/tests.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ components:
55
operations: ["get"]
66
- component: localfile
77
allOperations: true
8-
- component: azure.keyvault
8+
- component: azure.keyvault.certificate
9+
allOperations: true
10+
- component: azure.keyvault.managedidentity
11+
allOperations: true
12+
- component: azure.keyvault.serviceprincipal
913
allOperations: true
1014
- component: kubernetes
1115
allOperations: true

tests/conformance/common.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,11 @@ func loadPubSub(tc TestComponent) pubsub.PubSub {
372372
func loadSecretStore(tc TestComponent) secretstores.SecretStore {
373373
var store secretstores.SecretStore
374374
switch tc.Component {
375-
case "azure.keyvault":
375+
case "azure.keyvault.certificate":
376+
store = ss_azure.NewAzureKeyvaultSecretStore(testLogger)
377+
case "azure.keyvault.managedidentity":
378+
store = ss_azure.NewAzureKeyvaultSecretStore(testLogger)
379+
case "azure.keyvault.serviceprincipal":
376380
store = ss_azure.NewAzureKeyvaultSecretStore(testLogger)
377381
case "kubernetes":
378382
store = ss_kubernetes.NewKubernetesSecretStore(testLogger)

0 commit comments

Comments
 (0)