Skip to content

Don't add rust-lang-owner to private streams #1892

Open
@marcoieni

Description

@marcoieni

Current status

At the moment, to manage private streams automatically within this repo, we add the rust-lang-owner user to the stream.

See:

add_rust_lang_owner_to_private_streams(&mut stream_definitions, &zulip_controller)?;

This isn't great because users with access to the rust-lang-owner user credentials (i.e. the members of the infra-admins team) can log in with that user and read private conversations.

Proposed change

As noted in #t-infra > zulip Moderator vs mods @ 💬, there's a setting in zulip channels that allow to specify users that can add other people to the channel while not being part of the channel.

Image

This means that rust-lang-owner could add people from the channel without being part of it. There's also the field "who can unsubscribe anyone from this channel", which would allow rust-lang-owner to also remove people from the channel.

Proof

  1. I created a test channel that only has me
  2. I added rust-lang in that setting field
  3. As you can see from the following picture, rust-lang-owner isn't present in the channel members:

Image

How to

People who created the private stream could add rust-lang-owner to both those fields, so that from that point on, the stream can be managed in this repo.

Alternative

An alternative useful for streams that need to be created from scratch, is that:

  1. rust-lang-owner creates the stream, setting itself as a stream administrator
  2. adds all the members to the stream
  3. removes itself from the stream members, leaving itself as stream administrator

More context

The only private stream configured through this repo we have at the moment is t-compiler/contrib-private:

name = "t-compiler/contrib-private"

This is just a mitigation

Note that people with access to rust-lang-owner can still add themselves or rust-lang-owner to private streams and read the messages, but when doing so, at least they would leave a trace.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions