Skip to content
This repository was archived by the owner on Oct 12, 2023. It is now read-only.

Commit 1585920

Browse files
committed
Merge branch 'master' of github.com:keithduncan/iam-ssh-agent
2 parents 1aec0e0 + c2222b7 commit 1585920

File tree

3 files changed

+39
-1
lines changed

3 files changed

+39
-1
lines changed

README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ permitted ssh identities.
55

66
`iam-ssh-agent` is designed to be used in less trusted continuous integration
77
environments where you want to use an ssh key to clone source control
8-
repositories without granting access to the raw key material.
8+
repositories without providing the raw key material.
99

1010
`iam-ssh-agent` is split into two components: a binary that binds a unix domain
1111
socket with the ssh-agent protocol, and a serverless API that uses API Gateway
@@ -26,6 +26,16 @@ For development and testing:
2626
- [`/client`](client) a node package used for testing the ssh-agent
2727
implementation and comparing output to other ssh-agent implementations.
2828

29+
## Protocol
30+
31+
By storing the ssh private keys behind a service boundary, and providing an
32+
authenticated, access controlled signing service, client environments can
33+
authenticate without access to the ssh private keys.
34+
35+
![](images/protocol.png)
36+
37+
_Generated using https://sequencediagram.org/_
38+
2939
## Agent
3040

3141
The agent binary should be a near drop-in replacement for existing uses of

images/protocol.png

102 KB
Loading

images/protocol.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# https://sequencediagram.org
2+
3+
title git clone with iam-ssh-agent
4+
5+
git+ssh clone->(1)github.com:connect
6+
git+ssh clone(1)<-github.com:publickey auth
7+
git+ssh clone->(1)iam-ssh-agent binary: list-identities
8+
note over iam-ssh-agent binary,iam-ssh-agent backend:Requests signed with AWS IAM Credentials
9+
iam-ssh-agent binary->(1)iam-ssh-agent backend: list-identities
10+
#iam-ssh-agent backend->(1)DynamoDB: get ssh identities for caller
11+
#iam-ssh-agent backend(1)<-DynamoDB: identities
12+
#iam-ssh-agent backend->(1)AWS SSM Parameter Store: get public key parameters
13+
#iam-ssh-agent backend(1)<-AWS SSM Parameter Store: public key parameters
14+
iam-ssh-agent binary(1)<-iam-ssh-agent backend: public keys
15+
git+ssh clone(1)<-iam-ssh-agent binary: public keys
16+
git+ssh clone->(1)github.com: try public key
17+
git+ssh clone(1)<-github.com: public key accepted, sign this data
18+
git+ssh clone->(1)iam-ssh-agent binary: sign-data for public key
19+
iam-ssh-agent binary->(1)iam-ssh-agent backend: sign-data for public key
20+
#iam-ssh-agent backend->(1)DynamoDB: get ssh identities for caller
21+
#iam-ssh-agent backend(1)<-DynamoDB: identities
22+
#iam-ssh-agent backend->(1)AWS SSM Parameter Store: get + decrypt private key parameter for public key
23+
#iam-ssh-agent backend(1)<-AWS SSM Parameter Store: private key
24+
note right of iam-ssh-agent backend: ssh private key doesn't\nleave the service
25+
iam-ssh-agent binary(1)<-iam-ssh-agent backend: signature
26+
git+ssh clone(1)<-iam-ssh-agent binary: signature
27+
git+ssh clone->(1)github.com: signature
28+
git+ssh clone(1)<-github.com: authenticated

0 commit comments

Comments
 (0)