or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

tessl/pypi-google-cloud-secret-manager

Google Cloud Secret Manager API client library for Python that stores, manages, and secures access to application secrets

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/google-cloud-secret-manager@2.24.x

To install, run

npx @tessl/cli install tessl/pypi-google-cloud-secret-manager@2.24.0

0

# Google Cloud Secret Manager

1

2

Google Cloud Secret Manager API client library for Python that stores, manages, and secures access to application secrets. This comprehensive client provides both synchronous and asynchronous APIs for creating, storing, accessing, and managing secrets and their versions with built-in IAM integration, encryption options, and audit capabilities.

3

4

## Package Information

5

6

- **Package Name**: google-cloud-secret-manager

7

- **Language**: Python

8

- **Installation**: `pip install google-cloud-secret-manager`

9

10

## Core Imports

11

12

```python

13

from google.cloud import secretmanager

14

```

15

16

Specific client imports:

17

18

```python

19

from google.cloud.secretmanager import SecretManagerServiceClient

20

from google.cloud.secretmanager import SecretManagerServiceAsyncClient

21

```

22

23

Type imports:

24

25

```python

26

from google.cloud.secretmanager import Secret, SecretVersion, SecretPayload

27

from google.cloud.secretmanager import CreateSecretRequest, AddSecretVersionRequest

28

from google.cloud.secretmanager import Replication, CustomerManagedEncryption

29

from google.cloud.secretmanager import Topic, Rotation

30

```

31

32

Advanced imports for enterprise features:

33

34

```python

35

# For IAM operations

36

from google.iam.v1 import iam_policy_pb2, policy_pb2

37

38

# For async operations

39

from google.cloud.secretmanager import SecretManagerServiceAsyncClient

40

41

# For pagination

42

from google.cloud.secretmanager import ListSecretsPager, ListSecretsAsyncPager

43

44

# For location operations

45

from google.cloud.location import locations_pb2

46

47

# For field masks (updates)

48

from google.protobuf import field_mask_pb2

49

```

50

51

## Basic Usage

52

53

```python

54

from google.cloud import secretmanager

55

56

# Initialize the client

57

client = secretmanager.SecretManagerServiceClient()

58

59

# Project path

60

project_id = "your-project-id"

61

parent = f"projects/{project_id}"

62

63

# Create a secret

64

secret_id = "my-secret"

65

secret = secretmanager.Secret()

66

secret.replication = secretmanager.Replication()

67

secret.replication.automatic = secretmanager.Replication.Automatic()

68

69

create_secret_request = secretmanager.CreateSecretRequest()

70

create_secret_request.parent = parent

71

create_secret_request.secret_id = secret_id

72

create_secret_request.secret = secret

73

74

response = client.create_secret(request=create_secret_request)

75

print(f"Created secret: {response.name}")

76

77

# Add a secret version with data

78

secret_name = response.name

79

payload = secretmanager.SecretPayload()

80

payload.data = b"my-secret-data"

81

82

add_version_request = secretmanager.AddSecretVersionRequest()

83

add_version_request.parent = secret_name

84

add_version_request.payload = payload

85

86

version_response = client.add_secret_version(request=add_version_request)

87

print(f"Added secret version: {version_response.name}")

88

89

# Access the secret data

90

access_request = secretmanager.AccessSecretVersionRequest()

91

access_request.name = version_response.name

92

93

access_response = client.access_secret_version(request=access_request)

94

data = access_response.payload.data.decode('utf-8')

95

print(f"Secret data: {data}")

96

```

97

98

## Architecture

99

100

Google Cloud Secret Manager client follows Google API design patterns:

101

102

- **Client Classes**: Synchronous (`SecretManagerServiceClient`) and asynchronous (`SecretManagerServiceAsyncClient`) clients providing identical APIs

103

- **Request/Response Pattern**: All API operations use structured request objects and return response objects

104

- **Resource Hierarchy**: Secrets belong to projects, secret versions belong to secrets

105

- **Transport Layer**: Supports gRPC and REST protocols with automatic retries and authentication

106

- **Type Safety**: Proto-based message types ensure type safety and schema validation

107

108

## Capabilities

109

110

### Secret Management

111

112

Core secret lifecycle operations including creating secrets with replication policies, retrieving secret metadata, updating configurations, and deleting secrets. Provides complete CRUD operations for secret resources.

113

114

```python { .api }

115

def create_secret(self, request: CreateSecretRequest = None, **kwargs) -> Secret: ...

116

def get_secret(self, request: GetSecretRequest = None, **kwargs) -> Secret: ...

117

def update_secret(self, request: UpdateSecretRequest = None, **kwargs) -> Secret: ...

118

def delete_secret(self, request: DeleteSecretRequest = None, **kwargs) -> None: ...

119

def list_secrets(self, request: ListSecretsRequest = None, **kwargs) -> ListSecretsPager: ...

120

```

121

122

[Secret Management](./secret-management.md)

123

124

### Secret Version Management

125

126

Managing secret versions and accessing secret data, including adding new versions, retrieving version metadata, accessing secret payloads, and controlling version lifecycle states (enabled/disabled/destroyed).

127

128

```python { .api }

129

def add_secret_version(self, request: AddSecretVersionRequest = None, **kwargs) -> SecretVersion: ...

130

def get_secret_version(self, request: GetSecretVersionRequest = None, **kwargs) -> SecretVersion: ...

131

def access_secret_version(self, request: AccessSecretVersionRequest = None, **kwargs) -> AccessSecretVersionResponse: ...

132

def list_secret_versions(self, request: ListSecretVersionsRequest = None, **kwargs) -> ListSecretVersionsPager: ...

133

def enable_secret_version(self, request: EnableSecretVersionRequest = None, **kwargs) -> SecretVersion: ...

134

def disable_secret_version(self, request: DisableSecretVersionRequest = None, **kwargs) -> SecretVersion: ...

135

def destroy_secret_version(self, request: DestroySecretVersionRequest = None, **kwargs) -> SecretVersion: ...

136

```

137

138

[Secret Version Management](./secret-version-management.md)

139

140

### IAM and Security

141

142

Identity and Access Management operations for controlling access to secrets, including setting IAM policies, retrieving current policies, and testing permissions. Provides fine-grained access control integration.

143

144

```python { .api }

145

def set_iam_policy(self, request: SetIamPolicyRequest = None, **kwargs) -> Policy: ...

146

def get_iam_policy(self, request: GetIamPolicyRequest = None, **kwargs) -> Policy: ...

147

def test_iam_permissions(self, request: TestIamPermissionsRequest = None, **kwargs) -> TestIamPermissionsResponse: ...

148

```

149

150

[IAM and Security](./iam-security.md)

151

152

### Data Types and Models

153

154

Core data structures including Secret, SecretVersion, SecretPayload, replication configurations, encryption settings, and all request/response types used throughout the API.

155

156

```python { .api }

157

class Secret: ...

158

class SecretVersion: ...

159

class SecretPayload: ...

160

class Replication: ...

161

class CustomerManagedEncryption: ...

162

```

163

164

[Data Types and Models](./data-types.md)

165

166

## Error Handling

167

168

The client uses Google API Core exceptions:

169

170

```python

171

from google.api_core import exceptions

172

173

try:

174

secret = client.get_secret(request=get_request)

175

except exceptions.NotFound:

176

print("Secret not found")

177

except exceptions.PermissionDenied:

178

print("Access denied")

179

except exceptions.InvalidArgument as e:

180

print(f"Invalid argument: {e}")

181

```

182

183

## Async Usage

184

185

```python

186

import asyncio

187

from google.cloud.secretmanager import SecretManagerServiceAsyncClient

188

189

async def manage_secrets():

190

async with SecretManagerServiceAsyncClient() as client:

191

# All methods are async versions of synchronous client

192

secrets = []

193

async for secret in await client.list_secrets(request=list_request):

194

secrets.append(secret)

195

return secrets

196

197

# Run async function

198

secrets = asyncio.run(manage_secrets())

199

```