Skip to content

Commit 29f7db9

Browse files
authored
Merge pull request #737 from andyzhangx/encryption
feat: add requireInfraEncryption parameter in storage class
2 parents 3059820 + fe2b338 commit 29f7db9

File tree

30 files changed

+407
-84
lines changed

30 files changed

+407
-84
lines changed

.github/workflows/static.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
jobs:
66
go_lint:
77
name: Go Lint
8-
runs-on: ubuntu-18.04
8+
runs-on: ubuntu-latest
99
steps:
1010
- name: Checkout code
1111
uses: actions/checkout@master

.github/workflows/trivy.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
jobs:
88
build:
99
name: Build
10-
runs-on: ubuntu-18.04
10+
runs-on: ubuntu-latest
1111
steps:
1212
- name: Set up Go 1.x
1313
uses: actions/setup-go@v2

docs/driver-parameters.md

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ containerName | specify the existing container(directory) name | existing contai
1717
containerNamePrefix | specify Azure storage directory prefix created by driver | can only contain lowercase letters, numbers, hyphens, and length should be less than 21 | No |
1818
server | specify Azure storage account server address | existing server address, e.g. `accountname.privatelink.blob.core.windows.net` | No | if empty, driver will use default `accountname.blob.core.windows.net` or other sovereign cloud account address
1919
allowBlobPublicAccess | Allow or disallow public access to all blobs or containers for storage account created by driver | `true`,`false` | No | `false`
20+
requireInfraEncryption | specify whether or not the service applies a secondary layer of encryption with platform managed keys for data at rest for storage account created by driver | `true`,`false` | No | `false`
2021
storageEndpointSuffix | specify Azure storage endpoint suffix | `core.windows.net`, `core.chinacloudapi.cn`, etc | No | if empty, driver will use default storage endpoint suffix according to cloud environment
2122
tags | [tags](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/tag-resources) would be created in newly created storage account | tag format: 'foo=aaa,bar=bbb' | No | ""
2223
matchTags | whether matching tags when driver tries to find a suitable storage account | `true`,`false` | No | `false`

go.mod

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module sigs.k8s.io/blob-csi-driver
33
go 1.18
44

55
require (
6-
github.com/Azure/azure-sdk-for-go v65.0.0+incompatible
6+
github.com/Azure/azure-sdk-for-go v66.0.0+incompatible
77
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0
88
github.com/Azure/go-autorest/autorest v0.11.28
99
github.com/Azure/go-autorest/autorest/adal v0.9.21
@@ -30,7 +30,7 @@ require (
3030
k8s.io/kubernetes v1.23.3
3131
k8s.io/mount-utils v0.23.3
3232
k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9
33-
sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220810033612-3e07f125e561
33+
sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220822075409-fcea76e6a17e
3434
sigs.k8s.io/yaml v1.3.0
3535
)
3636

@@ -158,5 +158,5 @@ replace (
158158
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.23.3
159159
k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.23.3
160160
k8s.io/sample-controller => k8s.io/sample-controller v0.23.3
161-
sigs.k8s.io/cloud-provider-azure => sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220810033612-3e07f125e561
161+
sigs.k8s.io/cloud-provider-azure => sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220822075409-fcea76e6a17e
162162
)

go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
4141
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
4242
dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
4343
github.com/Azure/azure-sdk-for-go v55.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
44-
github.com/Azure/azure-sdk-for-go v65.0.0+incompatible h1:HzKLt3kIwMm4KeJYTdx9EbjRYTySD/t8i1Ee/W5EGXw=
45-
github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
44+
github.com/Azure/azure-sdk-for-go v66.0.0+incompatible h1:bmmC38SlE8/E81nNADlgmVGurPWMHDX2YNXVQMrBpEE=
45+
github.com/Azure/azure-sdk-for-go v66.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
4646
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1 h1:tz19qLF65vuu2ibfTqGVJxG/zZAI27NEIIbvAOQwYbw=
4747
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
4848
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0 h1:Yoicul8bnVdQrhDMTHxdEckRGX01XvwXDHUT9zYZ3k0=
@@ -1229,8 +1229,8 @@ rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
12291229
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.27/go.mod h1:tq2nT0Kx7W+/f2JVE+zxYtUhdjuELJkVpNz+x/QN5R4=
12301230
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30 h1:dUk62HQ3ZFhD48Qr8MIXCiKA8wInBQCtuE4QGfFW7yA=
12311231
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30/go.mod h1:fEO7lRTdivWO2qYVCVG7dEADOMo/MLDCVr8So2g88Uw=
1232-
sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220810033612-3e07f125e561 h1:STGz1EqxvY7vskck4iudgfCBuDrA+VjETRGyrtLKTWs=
1233-
sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220810033612-3e07f125e561/go.mod h1:KRSedLdzH6Y6wuqQRf3UdRj5hHv9NtTNxsokyuVE87w=
1232+
sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220822075409-fcea76e6a17e h1:KqPyU5xLPIB9hiTjOb+YW0H+aATRtWZshny8OarWsKI=
1233+
sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220822075409-fcea76e6a17e/go.mod h1:WejUASLh1xSH1eJrmpQBTX83RH4qF7mSr6Q3cThaCMY=
12341234
sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs=
12351235
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y=
12361236
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY=

pkg/blob/blob.go

+1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ const (
7676
keyVaultSecretVersionField = "keyvaultsecretversion"
7777
storageAccountNameField = "storageaccountname"
7878
allowBlobPublicAccessField = "allowblobpublicaccess"
79+
requireInfraEncryptionField = "requireinfraencryption"
7980
ephemeralField = "csi.storage.k8s.io/ephemeral"
8081
podNamespaceField = "csi.storage.k8s.io/pod.namespace"
8182
mountOptionsField = "mountoptions"

pkg/blob/controllerserver.go

+22-17
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
6868
parameters = make(map[string]string)
6969
}
7070
var storageAccountType, subsID, resourceGroup, location, account, containerName, containerNamePrefix, protocol, customTags, secretName, secretNamespace, pvcNamespace string
71-
var isHnsEnabled *bool
71+
var isHnsEnabled, requireInfraEncryption *bool
7272
var vnetResourceGroup, vnetName, subnetName string
7373
var matchTags, useDataPlaneAPI bool
7474
// set allowBlobPublicAccess as false by default
@@ -121,6 +121,10 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
121121
if strings.EqualFold(v, trueValue) {
122122
allowBlobPublicAccess = to.BoolPtr(true)
123123
}
124+
case requireInfraEncryptionField:
125+
if strings.EqualFold(v, trueValue) {
126+
requireInfraEncryption = to.BoolPtr(true)
127+
}
124128
case pvcNamespaceKey:
125129
pvcNamespace = v
126130
containerNameReplaceMap[pvcNamespaceMetadata] = v
@@ -228,22 +232,23 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
228232
}
229233

230234
accountOptions := &azure.AccountOptions{
231-
Name: account,
232-
Type: storageAccountType,
233-
Kind: accountKind,
234-
SubscriptionID: subsID,
235-
ResourceGroup: resourceGroup,
236-
Location: location,
237-
EnableHTTPSTrafficOnly: enableHTTPSTrafficOnly,
238-
VirtualNetworkResourceIDs: vnetResourceIDs,
239-
Tags: tags,
240-
MatchTags: matchTags,
241-
IsHnsEnabled: isHnsEnabled,
242-
EnableNfsV3: enableNfsV3,
243-
AllowBlobPublicAccess: allowBlobPublicAccess,
244-
VNetResourceGroup: vnetResourceGroup,
245-
VNetName: vnetName,
246-
SubnetName: subnetName,
235+
Name: account,
236+
Type: storageAccountType,
237+
Kind: accountKind,
238+
SubscriptionID: subsID,
239+
ResourceGroup: resourceGroup,
240+
Location: location,
241+
EnableHTTPSTrafficOnly: enableHTTPSTrafficOnly,
242+
VirtualNetworkResourceIDs: vnetResourceIDs,
243+
Tags: tags,
244+
MatchTags: matchTags,
245+
IsHnsEnabled: isHnsEnabled,
246+
EnableNfsV3: enableNfsV3,
247+
AllowBlobPublicAccess: allowBlobPublicAccess,
248+
RequireInfrastructureEncryption: requireInfraEncryption,
249+
VNetResourceGroup: vnetResourceGroup,
250+
VNetName: vnetName,
251+
SubnetName: subnetName,
247252
}
248253

249254
var accountKey string

test/e2e/dynamic_provisioning_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Dynamic Provisioning", func() {
8585
"skuName": "Standard_GRS",
8686
"secretNamespace": "default",
8787
// make sure this is the first test case due to storeAccountKey is set as false
88-
"storeAccountKey": "false",
88+
"storeAccountKey": "false",
89+
"requireInfraEncryption": "true",
8990
},
9091
}
9192
test.Run(cs, ns)

vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2021-07-01/compute/client.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2021-10-01/containerservice/client.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/Azure/azure-sdk-for-go/services/msi/mgmt/2018-11-30/msi/client.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2021-08-01/network/client.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/Azure/azure-sdk-for-go/services/preview/authorization/mgmt/2018-01-01-preview/authorization/client.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/Azure/azure-sdk-for-go/services/privatedns/mgmt/2018-09-01/privatedns/client.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/client.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2018-05-01/resources/client.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2021-09-01/storage/client.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/Azure/azure-sdk-for-go/version/version.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/modules.txt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# github.com/Azure/azure-sdk-for-go v65.0.0+incompatible
1+
# github.com/Azure/azure-sdk-for-go v66.0.0+incompatible
22
## explicit
33
github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2021-07-01/compute
44
github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2021-10-01/containerservice
@@ -1162,7 +1162,7 @@ k8s.io/utils/trace
11621162
## explicit; go 1.17
11631163
sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client
11641164
sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client
1165-
# sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220810033612-3e07f125e561 => sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220810033612-3e07f125e561
1165+
# sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220822075409-fcea76e6a17e => sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220822075409-fcea76e6a17e
11661166
## explicit; go 1.18
11671167
sigs.k8s.io/cloud-provider-azure/pkg/auth
11681168
sigs.k8s.io/cloud-provider-azure/pkg/azureclients
@@ -1259,4 +1259,4 @@ sigs.k8s.io/yaml
12591259
# k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.23.3
12601260
# k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.23.3
12611261
# k8s.io/sample-controller => k8s.io/sample-controller v0.23.3
1262-
# sigs.k8s.io/cloud-provider-azure => sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220810033612-3e07f125e561
1262+
# sigs.k8s.io/cloud-provider-azure => sigs.k8s.io/cloud-provider-azure v1.24.1-0.20220822075409-fcea76e6a17e

vendor/sigs.k8s.io/cloud-provider-azure/pkg/auth/azure_auth.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/sigs.k8s.io/cloud-provider-azure/pkg/azureclients/armclient/util.go

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)