Skip to content

Authorization

Learn about OpenTestFactory Orchestrator authorization, including details about creating policies using the supported authorization modules.

With the OpenTestFactory orchestrator, you must be authenticated (logged in) before your request can be authorized (granted permission to access). For information about authentication, see Authenticating.

The OpenTestFactory orchestrator expects attributes that are common to REST API requests. This means that the orchestrator authorization works with existing organization-wide or cloud-provider-wide access control systems which may handle other APIs besides the OpenTestFactory orchestrator API.

Determine Whether a Request is Allowed or Denied

The orchestrator evaluates all of the request attributes against all policies and allows or denies the request. All parts of an API request must be allowed by some policy in order to proceed. This means that permissions are denied by default.

When multiple authorization modules are configured, each is checked in sequence. If any authorizer approves or denies a request, that decision is immediately returned and no other authorizer is consulted. If all modules have no opinion on the request, then the request is denied. A deny returns an HTTP status code 403.

Authorization Modes

The OpenTestFactory orchestrator may authorize a request using one of several authorization modes:

  • JWT signature - A special-purpose authorization mode that grants permissions to namespaces based on the key used to sign the token. To learn more about using JWT signature authorization mode, see JWT signature.
  • ABAC - Attribute-based access control (ABAC) defines an access control paradigm whereby access rights are granted to users through the use of policies which combine attributes together. The policies can use any type of attributes (user attributes, resource attributes, object, etc.). To learn more about using the ABAC mode, see ABAC Mode.

Using Flags for Your Authorization Module

You must include a flag to indicate which authorization module your policies include.

The following flags can be used:

  • --authorization-mode=JWT
  • --authorization-mode=ABAC
  • --authorization-mode=JWT,ABAC
  • --authorization-mode=ABAC,JWT

Info

If you are using one of the provided Docker images, use the OPENTF_AUTHORIZATION_MODE environment variable instead. The setting will apply for every service launched by the image.

If you only want to use the JWT authorization module (the default), you can define the following environment variable or left it undefined.

OPENTF_AUTHORIZATION_MODE=JWT

If you want to use the ABAC and JWT authorization modules, you can define the following environment variable.

OPENTF_AUTHORIZATION_MODE=ABAC,JWT

Important

Some legacy services require the JWT signature authorization mode. The current orchestrator implementation adds JWT to the authorization mode if not already specified. So, specifying ABAC is interpreted as ABAC,JWT, and specifying nothing is interpreted as JWT. This may change in a future release.

You can choose more than one authorization module. Modules are checked in order, so an earlier module has higher priority to allow or deny a request.