Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DOC]Revise Security plugin Configuration TOC structure #2155

Closed
1 of 4 tasks
cwillum opened this issue Dec 8, 2022 · 7 comments
Closed
1 of 4 tasks

[DOC]Revise Security plugin Configuration TOC structure #2155

cwillum opened this issue Dec 8, 2022 · 7 comments
Assignees
Labels

Comments

@cwillum
Copy link
Contributor

cwillum commented Dec 8, 2022

What do you want to do?

  • Request a change to existing documentation
  • Add new documentation
  • Report a technical problem with the documentation
  • Other

Tell us about your request.
Reorganize topics in the Security plugin Configuration section to improve logic and order.

What other resources are available?
Addresses #1036 for Security.

@cwillum cwillum self-assigned this Dec 8, 2022
@cwillum
Copy link
Contributor Author

cwillum commented Dec 8, 2022

A rough, first pass at changing this section of the TOC:

Configuration https://opensearch.org/docs/latest/security-plugin/configuration/index/

Authentication (suggest Using "Authentication flow" for the index - removing "flow" - and adding a lead-in at the bottom to the next section to introduce specific protocols and options) https://opensearch.org/docs/latest/security-plugin/configuration/concepts/

This is going to need more thought before arriving at a final order. Additionally, I'll need to pad many of the sections with content to make it flow from one section to the next, either at the start, the end, or both. For now, the topics above capture a rough idea of how we can split the Configuration section into two. Creating the Authentication section on its own provides some balance with "Access Control", which we could rename Authorization.

@cwillum cwillum added 1 - Backlog Issue: The issue is unassigned or assigned but not started security and removed untriaged labels Dec 8, 2022
@cwillum
Copy link
Contributor Author

cwillum commented Dec 13, 2022

@cwperks @peternied Here's a proposal for reshuffling the Configuration portion of the Security TOC. Basically, the idea is to break out the authentication backends and separate them from the more universal configuration steps (e.g., configuring YAML files). Could I get your opinions about this format when you get a chance? You can use the links in the comment directly above to navigate to any of these. But here's a link to the Configuration index/landing page:
https://opensearch.org/docs/latest/security-plugin/configuration/index/

Configuration (uses the configuration overview steps as an index)

  • Configuring the Security backend (previously Backend configuration - this is a universal step in security configuration, which also includes basic authorization setup, so I'm leaving it with this general configuration section.)
  • Modifying the YAML files (previously just "YAML files")
  • Configuring TLS certificates
  • Generating self-signed certificates
  • Applying changes (previously "Applying changes with the securityadmin script". Users can learn they use a securityadmin script when they get there.)
  • System indexes
  • Configuring sign-in options (previously "Multiple Authentication Options ..." ...)
  • Disabling security

Authentication backends (will use "Authentication flow" as the index for this new heading)

  • OpenID Connect
  • SAML
  • Active Directory and LDAP
  • Proxy-based authentication
  • Client certificate authentication
  • (The Internal database, should this be included and documented? I don't have a clear idea of it from the mentions it gets.)

@cwperks
Copy link
Member

cwperks commented Dec 13, 2022

For the Authentication Backends I think it makes sense to include Bearer Auth (the current JSON Web Tokens section) and Basic Auth (what you are referring to as the internal database). See the following config for an example config.yml with both Basic and Bearer auth.

config:
  dynamic:
    authc:
      basic_internal_auth_domain:
        description: "Authenticate via HTTP Basic against internal users database"
        http_enabled: true
        transport_enabled: true
        order: 0
        http_authenticator:
          type: basic
          challenge: false
        authentication_backend:
          type: intern
      jwt_auth_domain:
        http_enabled: true
        transport_enabled: true
        order: 1
        http_authenticator:
          type: jwt
          challenge: false
          config:
            signing_key: "<base64_encoded_signing_key>"
            jwt_header: "Authorization"
            jwt_url_parameter: null
            subject_key: "sub"
            roles_key: "roles"
        authentication_backend:
          type: noop

The authentication_backend portion of the config can contain one of three values: intern, noop and ldap. When using the basic_internal_auth_domain, HTTP requests to the cluster contain a header like:

"Authorization": "Basic <base_64_encoded(username:password)>"

This username and password is taken from the request header to compare with the user in the internal database (internal_users.yml).

When noop is used, no comparison is made against the internal users so opensearch takes the information passed to it as the user information (subject_key for username and roles_key for backend roles)

For the jwt_auth_domain, the HTTP requests coming to the cluster also have the Authorization header, but in the following format:

"Authorization": "Bearer <jwt>"

where you can think of the jwt as an encoded payload that contains the subject_key and roles_key

The organization proposed makes sense to me.

@hdhalter
Copy link
Contributor

Hi Chris, a couple of questions on >> Applying changes (previously "Applying changes with the securityadmin script". Users can learn they use a securityadmin script when they get there.) and System indexes.

Applying changes is a little vague. Can we add what we are changing? And we might be able to replace it with a more descriptive word like 'Modifying ____'.

Is 'System indexes' a reference topic?

@cwillum
Copy link
Contributor Author

cwillum commented Dec 13, 2022

@hdhalter When I reorganized the topic names, I tried to strike a balance between brevity and meaning/meaninglessness—trying to keep them short without losing meaning. But I get your point. I could rename the securityadmin script topic "Applying changes to configurations". Any better?
Yes, "System indexes (née, System indices)" is vague. It's more of an explanatory topic. And it needs to be explained better (at least to my understanding).
@cwperks What do you think about merging this as a heading into "About security in OpenSearch"? I will need to do some work revising it anyhow.

@hdhalter hdhalter added 2 - In progress Issue/PR: The issue or PR is in progress. and removed 1 - Backlog Issue: The issue is unassigned or assigned but not started labels Dec 22, 2022
@cwillum cwillum removed the 2 - In progress Issue/PR: The issue or PR is in progress. label Jan 27, 2023
@cwillum
Copy link
Contributor Author

cwillum commented Jan 27, 2023

This issue is resolved by PR #2212

@cwillum cwillum closed this as completed Jan 27, 2023
@cwillum
Copy link
Contributor Author

cwillum commented Feb 2, 2023

Reopening to fix a link in _install-and-configure/install-opensearch/docker.md.

@cwillum cwillum reopened this Feb 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants