|
| 1 | +# Multi-factor authentication in the Rust Project |
| 2 | + |
| 3 | +The Rust infrastructure team adopts multi-factor authentication to secure access to different |
| 4 | +systems, and in particular, it enforces stricter rules for services considered critical |
| 5 | +Rust infrastructure. |
| 6 | + |
| 7 | +## Multi-factor authentication and assurance levels |
| 8 | + |
| 9 | +The Rust infrastructure team uses NIST's [Authentication Assurance Levels] to |
| 10 | +score different MFA methods according to the security expectations they bring. Thus, we consider |
| 11 | +as secure and approved MFA methods (in this order of preference): |
| 12 | + |
| 13 | +1. Hardware security keys compatible with FIDO2 / Webauthn (e.g. YubiKeys) as AAL-3 |
| 14 | +2. Hardware enabled with Webauthn passkeys (e.g. Apple TouchId) as AAL-2 |
| 15 | +3. TOTP apps (e.g. Google Authenticator) as AAL-2 |
| 16 | + |
| 17 | +## MFA and critical infrastructure access |
| 18 | + |
| 19 | +As a rule of thumb, when different MFA methods are supported by a service considered critical |
| 20 | +infrastructure, Project members with *privileged* or *administrator* access **must** use the most |
| 21 | +secure MFA method that the service provider supports. That means using hardware security keys whenever |
| 22 | +possible, and if hardware keys are not an option, Passkeys or TOTP apps must be used otherwise. |
| 23 | + |
| 24 | +Some of these services include: |
| 25 | + |
| 26 | +- Google Workspace and GCP (`rust-lang.org`) |
| 27 | +- AWS (through AWS SSO sessions) |
| 28 | +- Azure |
| 29 | +- Github |
| 30 | +- Datadog |
| 31 | +- Fastly |
| 32 | +- Heroku |
| 33 | +- 1password |
| 34 | + |
| 35 | +The Rust Infrastructure team officially supports [Yubico YubiKeys Series-5] as AAL-3 tested and |
| 36 | +approved devices. Project members may bring hardware keys from other vendors if they want, but |
| 37 | +the Rust infrastructure team won't be able to offer support regarding bugs or compatibility issues. |
| 38 | + |
| 39 | +In addition to that, when multiple secure MFA methods and devices are supported by a service, Project |
| 40 | +members **should** configure at least one additional MFA method for redundancy purposes, as long as additional |
| 41 | +MFA devices or methods are in the same AAL. For example, when setting up MFA for a `heroku` account, one may |
| 42 | +configure additional YubiKey (AAL-3) for redundancy purposes, but **should not** configure `1password` as TOTP |
| 43 | +(AAL-2) with the same intent, since this _could_ potentially decrease security, especially if TOTP the |
| 44 | +backup is configured in a way that makes it reachable to attack vectors during admin operations |
| 45 | + |
| 46 | +Project members holding several hardware security keys **must** uniquely identify the ones used to access |
| 47 | +Rust infrastructure, therefore guaranteeing non-ambiguity for the daily usage and revocation scenarios. |
| 48 | + |
| 49 | +Finally, when a Project member with access to critical infrastructure loses access to a hardware device |
| 50 | +used for MFA (e.g. a laptop was stolen or a YubiKey was lost), this must be disclosed with the Rust |
| 51 | +Infrastructure team, and that device **must** be immediately revoked from all systems it was configured as |
| 52 | +an allowed MFA device/method. |
| 53 | + |
| 54 | +## Yubico Hardware Key grants |
| 55 | + |
| 56 | +As part of the [Yubico Secure it Forward Program], The Rust Foundation will provide YubiKeys to Rust |
| 57 | +Project members with critical infrastructure access. If you are eligible for such a grant and would |
| 58 | +like to get the recommended YubiKeys for free, get in touch with the [T-infra team in Zulip]. |
| 59 | + |
| 60 | +The members of the following teams are eligible for this grant: |
| 61 | + |
| 62 | +- `infra` |
| 63 | +- `crates.io` |
| 64 | +- `docs.rs` |
| 65 | +- `release` |
| 66 | +- `triagebot` |
| 67 | +- `bors` |
| 68 | + |
| 69 | +[Authentication Assurance Levels]: https://pages.nist.gov/800-63-3/sp800-63b.html#sec3 |
| 70 | +[Yubico YubiKeys Series-5]: https://www.yubico.com/products/yubikey-5-overview |
| 71 | +[Yubico Secure it Forward Program]: https://www.yubico.com/why-yubico/secure-it-forward |
| 72 | +[T-infra team in Zulip]: https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra |
0 commit comments