Documentation
¶
Overview ¶
The Secrets API allows you to manage secrets, secret scopes, and access permissions.
Index ¶
- type AclItem
- type AclPermission
- type AzureKeyVaultSecretScopeMetadata
- type CreateScope
- type DeleteAcl
- type DeleteScope
- type DeleteSecret
- type GetAcl
- type ListAcls
- type ListAclsResponse
- type ListScopesResponse
- type ListSecrets
- type ListSecretsResponse
- type PutAcl
- type PutSecret
- type ScopeBackendType
- type SecretMetadata
- type SecretScope
- type SecretsAPI
- func (a *SecretsAPI) CreateScope(ctx context.Context, request CreateScope) error
- func (a *SecretsAPI) DeleteAcl(ctx context.Context, request DeleteAcl) error
- func (a *SecretsAPI) DeleteScope(ctx context.Context, request DeleteScope) error
- func (a *SecretsAPI) DeleteScopeByScope(ctx context.Context, scope string) error
- func (a *SecretsAPI) DeleteSecret(ctx context.Context, request DeleteSecret) error
- func (a *SecretsAPI) GetAcl(ctx context.Context, request GetAcl) (*AclItem, error)
- func (a *SecretsAPI) Impl() SecretsService
- func (a *SecretsAPI) ListAclsAll(ctx context.Context, request ListAcls) ([]AclItem, error)
- func (a *SecretsAPI) ListAclsByScope(ctx context.Context, scope string) (*ListAclsResponse, error)
- func (a *SecretsAPI) ListScopesAll(ctx context.Context) ([]SecretScope, error)
- func (a *SecretsAPI) ListSecretsAll(ctx context.Context, request ListSecrets) ([]SecretMetadata, error)
- func (a *SecretsAPI) ListSecretsByScope(ctx context.Context, scope string) (*ListSecretsResponse, error)
- func (a *SecretsAPI) PutAcl(ctx context.Context, request PutAcl) error
- func (a *SecretsAPI) PutSecret(ctx context.Context, request PutSecret) error
- func (a *SecretsAPI) WithImpl(impl SecretsService) *SecretsAPI
- type SecretsService
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AclItem ¶
type AclItem struct {
// The permission level applied to the principal.
Permission AclPermission `json:"permission"`
// The principal in which the permission is applied.
Principal string `json:"principal"`
}
type AclPermission ¶
type AclPermission string
const AclPermissionManage AclPermission = `MANAGE`
const AclPermissionRead AclPermission = `READ`
const AclPermissionWrite AclPermission = `WRITE`
func (*AclPermission) Set ¶ added in v0.2.0
func (ap *AclPermission) Set(v string) error
Set raw string value and validate it against allowed values
func (*AclPermission) String ¶ added in v0.2.0
func (ap *AclPermission) String() string
String representation for fmt.Print
func (*AclPermission) Type ¶ added in v0.2.0
func (ap *AclPermission) Type() string
Type always returns AclPermission to satisfy [pflag.Value] interface
type CreateScope ¶
type CreateScope struct {
// The principal that is initially granted `MANAGE` permission to the
// created scope.
InitialManagePrincipal string `json:"initial_manage_principal,omitempty"`
// The metadata for the secret scope if the type is `AZURE_KEYVAULT`
KeyvaultMetadata *AzureKeyVaultSecretScopeMetadata `json:"keyvault_metadata,omitempty"`
// Scope name requested by the user. Scope names are unique.
Scope string `json:"scope"`
// The backend type the scope will be created with. If not specified, will
// default to `DATABRICKS`
ScopeBackendType ScopeBackendType `json:"scope_backend_type,omitempty"`
}
type DeleteScope ¶
type DeleteScope struct {
// Name of the scope to delete.
Scope string `json:"scope"`
}
type DeleteSecret ¶
type GetAcl ¶
type GetAcl struct {
// The principal to fetch ACL information for.
Principal string `json:"-" url:"principal"`
// The name of the scope to fetch ACL information from.
Scope string `json:"-" url:"scope"`
}
Get secret ACL details
type ListAcls ¶
type ListAcls struct {
// The name of the scope to fetch ACL information from.
Scope string `json:"-" url:"scope"`
}
Lists ACLs
type ListAclsResponse ¶
type ListAclsResponse struct {
// The associated ACLs rule applied to principals in the given scope.
Items []AclItem `json:"items,omitempty"`
}
type ListScopesResponse ¶
type ListScopesResponse struct {
// The available secret scopes.
Scopes []SecretScope `json:"scopes,omitempty"`
}
type ListSecrets ¶
type ListSecrets struct {
// The name of the scope to list secrets within.
Scope string `json:"-" url:"scope"`
}
List secret keys
type ListSecretsResponse ¶
type ListSecretsResponse struct {
// Metadata information of all secrets contained within the given scope.
Secrets []SecretMetadata `json:"secrets,omitempty"`
}
type PutAcl ¶
type PutAcl struct {
// The permission level applied to the principal.
Permission AclPermission `json:"permission"`
// The principal in which the permission is applied.
Principal string `json:"principal"`
// The name of the scope to apply permissions to.
Scope string `json:"scope"`
}
type PutSecret ¶
type PutSecret struct {
// If specified, value will be stored as bytes.
BytesValue string `json:"bytes_value,omitempty"`
// A unique name to identify the secret.
Key string `json:"key"`
// The name of the scope to which the secret will be associated with.
Scope string `json:"scope"`
// If specified, note that the value will be stored in UTF-8 (MB4) form.
StringValue string `json:"string_value,omitempty"`
}
type ScopeBackendType ¶
type ScopeBackendType string
const ScopeBackendTypeAzureKeyvault ScopeBackendType = `AZURE_KEYVAULT`
const ScopeBackendTypeDatabricks ScopeBackendType = `DATABRICKS`
func (*ScopeBackendType) Set ¶ added in v0.2.0
func (sbt *ScopeBackendType) Set(v string) error
Set raw string value and validate it against allowed values
func (*ScopeBackendType) String ¶ added in v0.2.0
func (sbt *ScopeBackendType) String() string
String representation for fmt.Print
func (*ScopeBackendType) Type ¶ added in v0.2.0
func (sbt *ScopeBackendType) Type() string
Type always returns ScopeBackendType to satisfy [pflag.Value] interface
type SecretMetadata ¶
type SecretScope ¶
type SecretScope struct {
// The type of secret scope backend.
BackendType ScopeBackendType `json:"backend_type,omitempty"`
// The metadata for the secret scope if the type is `AZURE_KEYVAULT`
KeyvaultMetadata *AzureKeyVaultSecretScopeMetadata `json:"keyvault_metadata,omitempty"`
// A unique name to identify the secret scope.
Name string `json:"name,omitempty"`
}
type SecretsAPI ¶
type SecretsAPI struct {
// contains filtered or unexported fields
}
The Secrets API allows you to manage secrets, secret scopes, and access permissions.
Sometimes accessing data requires that you authenticate to external data sources through JDBC. Instead of directly entering your credentials into a notebook, use Databricks secrets to store your credentials and reference them in notebooks and jobs.
Administrators, secret creators, and users granted permission can read Databricks secrets. While Databricks makes an effort to redact secret values that might be displayed in notebooks, it is not possible to prevent such users from reading secrets.
func NewSecrets ¶
func NewSecrets(client *client.DatabricksClient) *SecretsAPI
func (*SecretsAPI) CreateScope ¶
func (a *SecretsAPI) CreateScope(ctx context.Context, request CreateScope) error
Create a new secret scope.
The scope name must consist of alphanumeric characters, dashes, underscores, and periods, and may not exceed 128 characters. The maximum number of scopes in a workspace is 100.
func (*SecretsAPI) DeleteAcl ¶
func (a *SecretsAPI) DeleteAcl(ctx context.Context, request DeleteAcl) error
Delete an ACL.
Deletes the given ACL on the given scope.
Users must have the `MANAGE` permission to invoke this API. Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope, principal, or ACL exists. Throws `PERMISSION_DENIED` if the user does not have permission to make this API call.
func (*SecretsAPI) DeleteScope ¶
func (a *SecretsAPI) DeleteScope(ctx context.Context, request DeleteScope) error
Delete a secret scope.
Deletes a secret scope.
Throws `RESOURCE_DOES_NOT_EXIST` if the scope does not exist. Throws `PERMISSION_DENIED` if the user does not have permission to make this API call.
func (*SecretsAPI) DeleteScopeByScope ¶
func (a *SecretsAPI) DeleteScopeByScope(ctx context.Context, scope string) error
Delete a secret scope.
Deletes a secret scope.
Throws `RESOURCE_DOES_NOT_EXIST` if the scope does not exist. Throws `PERMISSION_DENIED` if the user does not have permission to make this API call.
func (*SecretsAPI) DeleteSecret ¶
func (a *SecretsAPI) DeleteSecret(ctx context.Context, request DeleteSecret) error
Delete a secret.
Deletes the secret stored in this secret scope. You must have `WRITE` or `MANAGE` permission on the secret scope.
Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope or secret exists. Throws `PERMISSION_DENIED` if the user does not have permission to make this API call.
func (*SecretsAPI) GetAcl ¶
Get secret ACL details.
Gets the details about the given ACL, such as the group and permission. Users must have the `MANAGE` permission to invoke this API.
Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope exists. Throws `PERMISSION_DENIED` if the user does not have permission to make this API call.
func (*SecretsAPI) Impl ¶
func (a *SecretsAPI) Impl() SecretsService
Impl returns low-level Secrets API implementation
func (*SecretsAPI) ListAclsAll ¶
Lists ACLs.
List the ACLs for a given secret scope. Users must have the `MANAGE` permission to invoke this API.
Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope exists. Throws `PERMISSION_DENIED` if the user does not have permission to make this API call.
This method is generated by Databricks SDK Code Generator.
func (*SecretsAPI) ListAclsByScope ¶
func (a *SecretsAPI) ListAclsByScope(ctx context.Context, scope string) (*ListAclsResponse, error)
Lists ACLs.
List the ACLs for a given secret scope. Users must have the `MANAGE` permission to invoke this API.
Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope exists. Throws `PERMISSION_DENIED` if the user does not have permission to make this API call.
func (*SecretsAPI) ListScopesAll ¶
func (a *SecretsAPI) ListScopesAll(ctx context.Context) ([]SecretScope, error)
List all scopes.
Lists all secret scopes available in the workspace.
Throws `PERMISSION_DENIED` if the user does not have permission to make this API call.
This method is generated by Databricks SDK Code Generator.
func (*SecretsAPI) ListSecretsAll ¶
func (a *SecretsAPI) ListSecretsAll(ctx context.Context, request ListSecrets) ([]SecretMetadata, error)
List secret keys.
Lists the secret keys that are stored at this scope. This is a metadata-only operation; secret data cannot be retrieved using this API. Users need the READ permission to make this call.
The lastUpdatedTimestamp returned is in milliseconds since epoch. Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope exists. Throws `PERMISSION_DENIED` if the user does not have permission to make this API call.
This method is generated by Databricks SDK Code Generator.
func (*SecretsAPI) ListSecretsByScope ¶
func (a *SecretsAPI) ListSecretsByScope(ctx context.Context, scope string) (*ListSecretsResponse, error)
List secret keys.
Lists the secret keys that are stored at this scope. This is a metadata-only operation; secret data cannot be retrieved using this API. Users need the READ permission to make this call.
The lastUpdatedTimestamp returned is in milliseconds since epoch. Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope exists. Throws `PERMISSION_DENIED` if the user does not have permission to make this API call.
func (*SecretsAPI) PutAcl ¶
func (a *SecretsAPI) PutAcl(ctx context.Context, request PutAcl) error
Create/update an ACL.
Creates or overwrites the Access Control List (ACL) associated with the given principal (user or group) on the specified scope point.
In general, a user or group will use the most powerful permission available to them, and permissions are ordered as follows:
* `MANAGE` - Allowed to change ACLs, and read and write to this secret scope. * `WRITE` - Allowed to read and write to this secret scope. * `READ` - Allowed to read this secret scope and list what secrets are available.
Note that in general, secret values can only be read from within a command\non a cluster (for example, through a notebook). There is no API to read the actual secret value material outside of a cluster. However, the user's permission will be applied based on who is executing the command, and they must have at least READ permission.
Users must have the `MANAGE` permission to invoke this API.
The principal is a user or group name corresponding to an existing Databricks principal to be granted or revoked access.
Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope exists. Throws `RESOURCE_ALREADY_EXISTS` if a permission for the principal already exists. Throws `INVALID_PARAMETER_VALUE` if the permission is invalid. Throws `PERMISSION_DENIED` if the user does not have permission to make this API call.
func (*SecretsAPI) PutSecret ¶
func (a *SecretsAPI) PutSecret(ctx context.Context, request PutSecret) error
Add a secret.
Inserts a secret under the provided scope with the given name. If a secret already exists with the same name, this command overwrites the existing secret's value. The server encrypts the secret using the secret scope's encryption settings before storing it.
You must have `WRITE` or `MANAGE` permission on the secret scope. The secret key must consist of alphanumeric characters, dashes, underscores, and periods, and cannot exceed 128 characters. The maximum allowed secret value size is 128 KB. The maximum number of secrets in a given scope is 1000.
The input fields "string_value" or "bytes_value" specify the type of the secret, which will determine the value returned when the secret value is requested. Exactly one must be specified.
Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope exists. Throws `RESOURCE_LIMIT_EXCEEDED` if maximum number of secrets in scope is exceeded. Throws `INVALID_PARAMETER_VALUE` if the key name or value length is invalid. Throws `PERMISSION_DENIED` if the user does not have permission to make this API call.
func (*SecretsAPI) WithImpl ¶
func (a *SecretsAPI) WithImpl(impl SecretsService) *SecretsAPI
WithImpl could be used to override low-level API implementations for unit testing purposes with github.com/golang/mock or other mocking frameworks.
type SecretsService ¶
type SecretsService interface {
// Create a new secret scope.
//
// The scope name must consist of alphanumeric characters, dashes,
// underscores, and periods, and may not exceed 128 characters. The maximum
// number of scopes in a workspace is 100.
CreateScope(ctx context.Context, request CreateScope) error
// Delete an ACL.
//
// Deletes the given ACL on the given scope.
//
// Users must have the `MANAGE` permission to invoke this API. Throws
// `RESOURCE_DOES_NOT_EXIST` if no such secret scope, principal, or ACL
// exists. Throws `PERMISSION_DENIED` if the user does not have permission
// to make this API call.
DeleteAcl(ctx context.Context, request DeleteAcl) error
// Delete a secret scope.
//
// Deletes a secret scope.
//
// Throws `RESOURCE_DOES_NOT_EXIST` if the scope does not exist. Throws
// `PERMISSION_DENIED` if the user does not have permission to make this API
// call.
DeleteScope(ctx context.Context, request DeleteScope) error
// Delete a secret.
//
// Deletes the secret stored in this secret scope. You must have `WRITE` or
// `MANAGE` permission on the secret scope.
//
// Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope or secret
// exists. Throws `PERMISSION_DENIED` if the user does not have permission
// to make this API call.
DeleteSecret(ctx context.Context, request DeleteSecret) error
// Get secret ACL details.
//
// Gets the details about the given ACL, such as the group and permission.
// Users must have the `MANAGE` permission to invoke this API.
//
// Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope exists. Throws
// `PERMISSION_DENIED` if the user does not have permission to make this API
// call.
GetAcl(ctx context.Context, request GetAcl) (*AclItem, error)
// Lists ACLs.
//
// List the ACLs for a given secret scope. Users must have the `MANAGE`
// permission to invoke this API.
//
// Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope exists. Throws
// `PERMISSION_DENIED` if the user does not have permission to make this API
// call.
//
// Use ListAclsAll() to get all AclItem instances
ListAcls(ctx context.Context, request ListAcls) (*ListAclsResponse, error)
// List all scopes.
//
// Lists all secret scopes available in the workspace.
//
// Throws `PERMISSION_DENIED` if the user does not have permission to make
// this API call.
//
// Use ListScopesAll() to get all SecretScope instances
ListScopes(ctx context.Context) (*ListScopesResponse, error)
// List secret keys.
//
// Lists the secret keys that are stored at this scope. This is a
// metadata-only operation; secret data cannot be retrieved using this API.
// Users need the READ permission to make this call.
//
// The lastUpdatedTimestamp returned is in milliseconds since epoch. Throws
// `RESOURCE_DOES_NOT_EXIST` if no such secret scope exists. Throws
// `PERMISSION_DENIED` if the user does not have permission to make this API
// call.
//
// Use ListSecretsAll() to get all SecretMetadata instances
ListSecrets(ctx context.Context, request ListSecrets) (*ListSecretsResponse, error)
// Create/update an ACL.
//
// Creates or overwrites the Access Control List (ACL) associated with the
// given principal (user or group) on the specified scope point.
//
// In general, a user or group will use the most powerful permission
// available to them, and permissions are ordered as follows:
//
// * `MANAGE` - Allowed to change ACLs, and read and write to this secret
// scope. * `WRITE` - Allowed to read and write to this secret scope. *
// `READ` - Allowed to read this secret scope and list what secrets are
// available.
//
// Note that in general, secret values can only be read from within a
// command\non a cluster (for example, through a notebook). There is no API
// to read the actual secret value material outside of a cluster. However,
// the user's permission will be applied based on who is executing the
// command, and they must have at least READ permission.
//
// Users must have the `MANAGE` permission to invoke this API.
//
// The principal is a user or group name corresponding to an existing
// Databricks principal to be granted or revoked access.
//
// Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope exists. Throws
// `RESOURCE_ALREADY_EXISTS` if a permission for the principal already
// exists. Throws `INVALID_PARAMETER_VALUE` if the permission is invalid.
// Throws `PERMISSION_DENIED` if the user does not have permission to make
// this API call.
PutAcl(ctx context.Context, request PutAcl) error
// Add a secret.
//
// Inserts a secret under the provided scope with the given name. If a
// secret already exists with the same name, this command overwrites the
// existing secret's value. The server encrypts the secret using the secret
// scope's encryption settings before storing it.
//
// You must have `WRITE` or `MANAGE` permission on the secret scope. The
// secret key must consist of alphanumeric characters, dashes, underscores,
// and periods, and cannot exceed 128 characters. The maximum allowed secret
// value size is 128 KB. The maximum number of secrets in a given scope is
// 1000.
//
// The input fields "string_value" or "bytes_value" specify the type of the
// secret, which will determine the value returned when the secret value is
// requested. Exactly one must be specified.
//
// Throws `RESOURCE_DOES_NOT_EXIST` if no such secret scope exists. Throws
// `RESOURCE_LIMIT_EXCEEDED` if maximum number of secrets in scope is
// exceeded. Throws `INVALID_PARAMETER_VALUE` if the key name or value
// length is invalid. Throws `PERMISSION_DENIED` if the user does not have
// permission to make this API call.
PutSecret(ctx context.Context, request PutSecret) error
}
The Secrets API allows you to manage secrets, secret scopes, and access permissions.
Sometimes accessing data requires that you authenticate to external data sources through JDBC. Instead of directly entering your credentials into a notebook, use Databricks secrets to store your credentials and reference them in notebooks and jobs.
Administrators, secret creators, and users granted permission can read Databricks secrets. While Databricks makes an effort to redact secret values that might be displayed in notebooks, it is not possible to prevent such users from reading secrets.