Rate this page:
Customers need to have confidence in your software to use it. A key part of building trust is security, which encompasses a range of measures, including authentication and authorization, software execution, and data management. Forge facilitates and takes on responsibility for many of these things, conferring trust through its platform.
This page provides an overview of security for the Forge platform. This includes information on the architecture, features, and policies that contribute to security. Note that this page only covers these topics at a high level; it does not provide instructions on how to implement security in your app.
Atlassian is responsible for running the platform used by Forge applications. This includes enforcing what applications can and cannot do .
Forge apps can:
Forge apps cannot:
The Forge architecture is designed to sandbox apps to control app execution. There are two main parts to this: user interface security and the app runtime.
Forge offers two distinct options for building the user interface of your apps, custom UI and the UI kit. These options differ in terms of the complexity of the interactions and visual features that they cater for. Note that both custom UI and UI kit apps inherit modern security features to ensure high trust between Atlassian, developers, and users. As a result, app developers are able to create secure user interfaces by default.
With the UI kit, you'll be using a declarative UI to build your user interface, where apps implement functions to compose UI Kit components. The functions run on the server-side. The UI kit components are already provided, so you don't need to design and create them, and they're always up to date with Atlassian design standards. Sandboxing UI functions in the UI kit makes the rendered UI secure, as no app code executes in the browser. This sandboxing also makes use of the security and isolation mechanisms that are used by the Forge back-end infrastructure.
Controlling the app runtime is critical to security. The Forge runtime sandboxes the apps from the environment in which they execute. By running apps in isolated environments, the platform limits what apps can do. For example:
To understand how this works in detail, see the diagram and notes on the Forge app sandbox below:
The Forge platform enables secure data management through its architecture and the way it handles data. This includes data isolation to prevent leaks as well as data handling policies for the Forge environments.
Data isolation for apps is necessary in a cloud environment. The Atlassian cloud products are multi-tenant, so apps need to be multi-tenant. However, this means that apps can potentially mix customer data. For example, two customers use an app that uses a global object to cache data by issue key. Issue keys are not globally unique, therefore data could leak from one customer to another.
The Forge platform prevents these types of scenarios by sandboxing apps, as described in the App runtime section. Since apps are sandboxed, app calls occur in separate instances of the app. This means that data is isolated at the runtime level, preventing data leaking.
Forge ensures that data is handled responsibly by providing different environments for app developers. An environment is a version of the app that has its own code, manifest, modules, outbound auth container, environment variables, and installations. Forge provides three static environments , , and , which are set up when the app is created. Policies for reading data are enforced on these environments.
Enforcing these policies ensures that developers cannot get access to customer data without consent.
Authentication is a fundamental part of security, but it can be complicated to implement and can open up the app to security vulnerabilities. Forge controls the app runtime, which enables it to provide managed APIs that apps can use to make secure calls to REST APIs.
Using managed APIs means that third-party code is never trusted with user credentials. API calls are automatically authenticated on behalf of the app by the surrounding Forge infrastructure. This also means that making API calls is much simpler.
A Forge app using the managed APIs can make requests on behalf of a user. Before permitting such an API request, the runtime ensures that the user has agreed to the required access. If not, the user is shown what access the app requires. After the user has agreed and provided access, future API requests on behalf of the user are passed automatically.
The app may also include content and external permissions so the app can send data to and retrieve data from external domains. This covers both custom UI apps and Function as a Service (FaaS) functions. If the app requires such permissions, users will also need to consent to them before they can use the app.
When an app changes its access requirements, users are prompted to review the access and provide consent again. An app defines its access requirements in the manifest file in the form of OAuth 2.0 scopes, content, and external permissions.
Forge apps use the OAuth 2.0 protocol when authenticating with Jira platform, Jira Software, and Confluence REST APIs.
Scopes are an OAuth 2.0 mechanism that limit an app's access to a user's account. To access an Atlassian product REST API that uses OAuth 2.0 authentication, the app needs to request scopes in the manifest file. See Add scopes to call an Atlassian REST API for details.
If an app doesn't request any scopes, the app doesn't have access to OAuth 2.0 protected resources. This follows the principle of least privilege and helps to retain the trust of your users.
Rate this page: