Movatterモバイル変換


[0]ホーム

URL:


Alert GO-2024-3228: Coder vulnerable to post-auth URL redirection to untrusted site ('Open Redirect') in github.com/coder/coder
Notice  The highest tagged major version isv2.

dbauthz

package
v0.27.3Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 1, 2023 License:AGPL-3.0Imports:14Imported by:0

Details

Repository

github.com/coder/coder

Links

Documentation

Overview

Package dbauthz provides an authorization layer on top of the database. Thispackage exposes an interface that is currently a 1:1 mapping withdatabase.Store.

The same cultural rules apply to this package as they do to database.Store.Meaning that each method implemented should keep the number of databasequeries as close to 1 as possible. Each method should do 1 thing, with nounexpected side effects (eg: updating multiple tables in a single method).

Do not implement business logic in this package. Only authorization relatedlogic should be implemented here. In most cases, this should only be a call tothe rbac authorizer.

When a new database method is added to database.Store, it should be added tothis package as well. The unit test "Accounting" will ensure all methods aretested. See other unit tests for examples on how to write these.

Index

Constants

This section is empty.

Variables

View Source
var AsRemoveActor =rbac.Subject{ID: "remove-actor",}
View Source
var NoActorError =xerrors.Errorf("no authorization actor in context: %w",sql.ErrNoRows)

NoActorError wraps ErrNoRows for the api to return a 404. This is the correctresponse when the user is not authorized.

Functions

funcActorFromContext

func ActorFromContext(ctxcontext.Context) (rbac.Subject,bool)

ActorFromContext returns the authorization subject from the context.All authentication flows should set the authorization subject in the context.If no actor is present, the function returns false.

funcAs

As returns a context with the given actor stored in the context.This is used for cases where the actor touching the database is not theactor stored in the context.When you use this function, be sure to add a //nolint commentexplaining why it is necessary.

funcAsAutostartadded inv0.17.4

func AsAutostart(ctxcontext.Context)context.Context

AsAutostart returns a context with an actor that has permissions requiredfor autostart to function.

funcAsHangDetectoradded inv0.25.0

func AsHangDetector(ctxcontext.Context)context.Context

AsHangDetector returns a context with an actor that has permissions requiredfor unhanger.Detector to function.

funcAsProvisionerdadded inv0.17.4

func AsProvisionerd(ctxcontext.Context)context.Context

AsProvisionerd returns a context with an actor that has permissions requiredfor provisionerd to function.

funcAsSystemRestrictedadded inv0.17.4

func AsSystemRestricted(ctxcontext.Context)context.Context

AsSystemRestricted returns a context with an actor that has permissionsrequired for various system operations (login, logout, metrics cache).

funcIsNotAuthorizedErroradded inv0.20.0

func IsNotAuthorizedError(errerror)bool

funcNew

func New(dbdatabase.Store, authorizerrbac.Authorizer, loggerslog.Logger)database.Store

Types

typeNotAuthorizedError

type NotAuthorizedError struct {Errerror}

NotAuthorizedError is a sentinel error that unwraps to sql.ErrNoRows.This allows the internal error to be read by the caller if needed. Otherwiseit will be handled as a 404.

func (NotAuthorizedError)Error

func (eNotAuthorizedError) Error()string

func (NotAuthorizedError)Unwrap

func (eNotAuthorizedError) Unwrap()error

Unwrap will always unwrap to a sql.ErrNoRows so the API returns a 404.So 'errors.Is(err, sql.ErrNoRows)' will always be true.

Source Files

View all Source files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f orF : Jump to
y orY : Canonical URL
go.dev uses cookies from Google to deliver and enhance the quality of its services and to analyze traffic.Learn more.

[8]ページ先頭

©2009-2025 Movatter.jp