Files
upstream-zulip/puppet/kandra/files/teleport-aws-credentials
upstream-mirror 64898b2c79
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
2026-09-15 15:05:30 +05:00

43 lines
1.5 KiB
Bash

#!/usr/bin/env bash
# This uses AWS IAM Roles Anywhere[1] to acquire the NonAWSInstance
# role for the whole server. It does this by having configured the
# Teleport CA to be a "trust anchor," allowing the Teleport host
# certificate to be used for authentication; the NonAWSInstance role
# itself has a trust relationship which lists the CA as sufficient to
# authorize for the role.
#
# [1]: https://docs.aws.amazon.com/rolesanywhere/latest/userguide
set -eu
# Check if we have cached credentials; they're good for 60 minutes, so
# check within 55min.
cache="/etc/aws-credential-cache.json"
if [ -s "$cache" ] && [ "$(find "$cache" -mmin -55)" ]; then
cat "$cache"
exit 0
fi
# Extract the current host cert and key from the Teleport database.
# These are nominally static for the lifetime of the host, but there's
# little reason to not refresh them on every run, in case they get
# rotated.
teleport_json=$(
sqlite3 /var/lib/teleport/proc/sqlite.db "select value from kv where key = '/ids/node/current'"
)
# $teleport_json is a secret (it has the host key) so extract it
# carefully (i.e. not using `echo $teleport_json"`")
jq -r .spec.tls_cert <<<"$teleport_json" | base64 -d >/var/lib/teleport/host.crt
jq -r .spec.key <<<"$teleport_json" | base64 -d >/var/lib/teleport/host.key
# Write the cache out
/srv/zulip-aws-tools/bin/aws_signing_helper credential-process \
--certificate /var/lib/teleport/host.crt \
--private-key /var/lib/teleport/host.key \
"$@" >"$cache"
cat "$cache"