際際滷

際際滷Share a Scribd company logo
OpenPubKey によるイメ`ジの俸兆と編^
NTT ソフトウェアイノベ`ションセンタ
? 苻?
DockerCon 2023 ハイライト (2023/11/2)
? Moby (Docker Engineのupstream)、BuildKit、containerd、runc などの
OSSのコミッタ
? 書定のDockerConでは ^Reproducible builds with BuildKit for software
supply chain security ̄ にvして鞠
C https://medium.com/nttlabs/dockercon-2023-reproducible-builds-with-buildkit-
for-software-supply-chain-security-0e5aedd1aaa7
? 書?は??の函りMみについてではなく、 Docker芙?BastionZero 芙に
よる OpenPubKey への函りMみについてB初
? Reproducible builds にも OpenPubKey を?していきたいと房っている
2
??B初
? 2023/10/4: Demystify Secure Supply Chain Metadata
C Christian Dupuis, Sr Principal Engineer, Docker
? 2023/10/5: Building the Software Supply Chain on Docker
Official Images
C Ethan Heilman, CTO & Co-Founder, BastionZero
James Carnegie, Computer Programmer, Docker
? https://www.dockercon.com/ からまだ辛嬬
3
DockerCon での OpenPubKey vBセッション
4
Linux Foundation プロジェクト晒のアナウンス
https://www.linuxfoundation.org/press/announcing-openpubkey-project
? OpenID Connect (OIDC) を?し、巷_I児Pとして聞えるようにしたもの
^In essence, OpenPubkey is a protocol for getting OpenID Providers (OPs) to bind
identities to public keys. ̄ ( https://github.com/openpubkey/openpubkey )
? 箭えば、GitHub Actions 貧でDockerイメ`ジをビルドするHに、GitHubリポジト
リのorganization IDを根む俸兆を原紗できる
? GitHub Actions の Secrets に蜘畜Iをアップロ`ドしたりしなくてよい
? GitHub Actions 參翌の OpenID プロバイダ への鬉眸殯廖
プロバイダ箸任鮉Iは(圻t議に)音勣。
? Sigstore の Cosign (keyless) に貌ているが、よりシンプルな撹
5
OpenPubKey
? GitHub ActionsのYAML:
https://github.com/openpubkey/demo
? BuildKit へのパッチ (隆マ`ジ):
https://github.com/openpubkey/buildkit/tree/opk-signing
? docker verify コマンド:
https://github.com/openpubkey/verify-docker-cli-plugin
6
DockerConでのOpenPubKeyのデモ
7
GitHub Actions の YAML
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3.0.0
with:
driver-opts: |
image=openpubkey/buildkit:opk-signing
env.ACTIONS_ID_TOKEN_REQUEST_URL=${{ env.ACTIONS_ID_TOKEN_REQUEST_URL }}
env.ACTIONS_ID_TOKEN_REQUEST_TOKEN=${{ env.ACTIONS_ID_TOKEN_REQUEST_TOKEN }}
- name: Build and push Docker image on push
id: build-and-push
uses: docker/build-push-action@v4.0.0
with:
context: .
push: true
´
sbom: true
provenance: true
´
https://github.com/openpubkey/demo/blob/6b29027/.github/workflows/docker-build.yaml
8
GitHub Actions の YAML
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3.0.0
with:
driver-opts: |
image=openpubkey/buildkit:opk-signing
env.ACTIONS_ID_TOKEN_REQUEST_URL=${{ env.ACTIONS_ID_TOKEN_REQUEST_URL }}
env.ACTIONS_ID_TOKEN_REQUEST_TOKEN=${{ env.ACTIONS_ID_TOKEN_REQUEST_TOKEN }}
- name: Build and push Docker image on push
id: build-and-push
uses: docker/build-push-action@v4.0.0
with:
context: .
push: true
´
sbom: true
provenance: true
´
https://github.com/openpubkey/demo/blob/6b29027/.github/workflows/docker-build.yaml
GitHub により?啜弔穆O協される
OIDCvBのh廠篳を
BuildKit デ`モン に参イ気擦
OpenPubKeyに鬉靴 fork を峺協する
https://github.com/openpubkey/buildkit
SBOMおよびSLSA Provenance (ビルド秤) を
イメ`ジに原紗する。
磴擦董SBOMやSLSA Provenance にする俸兆
(i.e., イメ`ジにする俸兆) も原紗する。
? Docker CLI プラグインとして戻工
https://github.com/openpubkey/verify-docker-cli-plugin
? Docker Hub 貧のイメ`ジ ^openpubkey/demo@sha256´ ̄ が、GitHub
organization ^openpubkey ̄ の GitHub Actions でビルドされたことを_J
できた
? ただし、GitHub Actions のキ`セット
(https://token.actions.githubusercontent.com/.well-known/jwks) を佚mで
きる念戻
9
docker verify コマンド
$ gh api /orgs/openpubkey | jq .id
145685596
$ docker verify openpubkey/demo@sha256:6acf54fca0e7f9e9ef3d23c9b9ee306ce3c56b8315aa756643e4df25032bcdbe 
--repo-owner-id 145685596
´
Verified all required attestations are present
10
docker verify コマンド (竃?畠悶)
$ docker verify openpubkey/demo@sha256:6acf54fca0e7f9e9ef3d23c9b9ee306ce3c56b8315aa756643e4df25032bcdbe 
--repo-owner-id 145685596
Verifying 2 attestations for
pkg:docker/openpubkey/demo?digest=sha256:6acf54fca0e7f9e9ef3d23c9b9ee306ce3c56b8315aa756643e4df25032bcdbe&platform
=linux/amd64
Verifying https://spdx.dev/Document attestation
? Verified attestation refers to digest sha256:6fbb78f2482a527575558d85147aee5f5f9f5288133bb0af316f91ed525a7246
? Verified OIDC token was signed by https://token.actions.githubusercontent.com
? Verified attestation digest was signed on a Github Actions run:
https://github.com/openpubkey/demo/actions/runs/6628798402
? Verified repository owner 145685596 (openpubkey)
Verifying https://slsa.dev/provenance/v0.2 attestation
? Verified attestation refers to digest sha256:6fbb78f2482a527575558d85147aee5f5f9f5288133bb0af316f91ed525a7246
? Verified OIDC token was signed by https://token.actions.githubusercontent.com
? Verified attestation digest was signed on a Github Actions run:
https://github.com/openpubkey/demo/actions/runs/6628798402
? Verified repository owner 145685596 (openpubkey)
? Verified signed git sha provenance 6b29027d7ddae1c2dcdcfb88ab402473af5d20c8
? Verified signed git repo provenance openpubkey/demo
Verified all required attestations are present
11
フロ` (1/2)
BuildKit
(OpenPubKey鬦) GitHub Actions
$ACTIONS_ID_TOKEN_REQUEST_TOKEN
$ACTIONS_ID_TOKEN_REQUEST_URL
HTTP GET
$ACTIONS_ID_TOKEN_REQUEST_URL
&audience=$AUDIENCE
^Authorization: bearer
$ACTIONS_ID_TOKEN_REQUEST_TOKEN ̄
? ID Token をk?するための
Bearer Token をk?
? イメ`ジをビルドし、
provenanceを?撹
? ?指泙蠅嶺Iペアを?撹
? Client-Instance Claim (CIC) を
?撹
{`rz¨: random(),
`upk¨: publicKey,
`alg¨: `EC256¨,
`att¨: provenenceHash}
? CIC のハッシュを ^audience ̄
としてID Tokenのk?を勣箔
☆CIC のハッシュは、GitHub Actions などの workload identity では audience に根めるが、user identity では nonce に根める。
audience (GHAのデフォルトでは リポジトリ
のURL) には販吭の?忖双をいれてよいので
OIDCのAPIを筝せずにCICのハッシュを僕る
ことができる
12
フロ` (2/2)
BuildKit
(OpenPubKey鬦) GitHub Actions
ID Token: ^SUBSTR0.SUBSTR1.SUBSTR2 ̄
? SUBSTR0: ヘッダ の base64
? SUBSTR1: ペイロ`ドの base64
(^aud ̄ などを根む)
? SUBSTR2:  ̄SUBST0.SUBST1 ̄ にする
俸兆
? 鞭け函った Bearer Token が
栽っていれば、ID Token をk
?する
? ID Tokenの麼なペイロ`ド:
? ^aud ̄ (audience)
? ^repository_owner_id ̄
(GitHubのorgのID)
? ^run_id ̄ (GHAのjobの
g?ID)
? ID Tokenは、GHA??が隔っ
ているIで俸兆される
? ?隔ちのCICと、GHAから鞭
け函ったID TokenとをMみ栽
わせ、俸兆し、 PK Token を
撹する。これをイメ`ジに
原紗する。
? Guillou-Quisquater (GQ) 俸兆
により、圷のID Tokenの、
L盈される (ペイロ`ドの
何蛍は巷_される)
(念)
CIC: Client-Instance Claim: {`rz¨: random(), `upk¨: publicKey, `alg¨: `EC256, `att¨: provenanceHash}
audience: ここでは CICのハッシュ
ID Token がIペアに~づく
☆GQ俸兆はworkload identityでは駅、user identity では販吭
GHAの栽はペイロ`ドが巷_されて}ないが、
麿のOpenIDプロバイダでは篇が駅勣そう
13
gHのデ`タ
https://oci.dag.dev/?image=openpubkey%2Fdemo%40sha256%3A6acf54fca0e7f9e9ef3d23c9b9ee306ce3c56b8315aa756643e4df25032bcdbe
14
gHのデ`タ
https://oci.dag.dev/?image=openpubkey%2Fdemo%40sha256%3A6acf54fca0e7f9e9ef3d23c9b9ee306ce3c56b8315aa756643e4df25032bcdbe
application/vnd.oci.image.manifest.v1+json
application/vnd.oci.image.manifest.v1+json
application/vnd.in-toto.provenance+dsse
15
gHのデ`タ
https://oci.dag.dev/blob/openpubkey/demo@sha256:f5daba3a4bcd7f76563a5ff36f6dab8f6e5e705d7b23e541a5913946a3a08bde/?
mt=application%2Fvnd.in-toto.provenance%2Bdsse&size=16563
デコ`ドしないとiめない
https://onlinejsontools.com/convert-base64-to-json
16
{
"payloadType":"application/vnd.in-toto+json",
"payload": ´,
"signatures":[{"keyid":"OPK","sig": ´}]
}
{
"payload": ´,
"signatures": [
{"protected": ´, "header": {"sig_type":
"cic"}, "signature": ´},
{"protected": ´, "header": {"sig_type":
"oidc_gq"}, "signature": ´}
]
}
.signatures[0].sig
{
"jti": "66e345cc-0806-42a0-a346-7b98dc8ab2c0",
"sub": "repo:openpubkey/demo:ref:refs/heads/main",
"aud": "5km4t6i4IPk-tnv4qlmCcryfY0O-4PCNWOmFCJZJrzI",
"ref": "refs/heads/main",
"sha": "6b29027d7ddae1c2dcdcfb88ab402473af5d20c8",
"repository": "openpubkey/demo",
"repository_owner": "openpubkey",
"repository_owner_id": "145685596",
"run_id": "6628798402",
"repository_id": "698282570",
"iss": https://token.actions.githubusercontent.com
´,
}
.payload
{
"alg": "ES256",
"att": ´
"rz": ´,
"upk": {"alg": "ES256", "crv": "P-256",
"kty": "EC", "x": ´, "y": ´ }
}
{
"typ": "JWT",
"alg": "RS256",
"x5t": "AB3c0BSoSOiCRXez5POu2zvPX_0",
"kid": "001DDCD014A848E8824577B3E4F3AEDB3BCF5FFD"
}
.signatures[0].protected .signatures[1].protected
application/vnd.in-toto.provenance+dsse
(SLSA Provenance)
.payload
? OpenID Connect (OIDC) を?し、巷_I児Pとして聞えるようにしたもの
^In essence, OpenPubkey is a protocol for getting OpenID Providers (OPs) to bind identities to
public keys. ̄ ( https://github.com/openpubkey/openpubkey )
? 箭えば、GitHub Actions 貧でDockerイメ`ジをビルドするHに、GitHubリポジトリの
organization IDを根む俸兆を原紗できる
? GitHub Actions の Secrets に蜘畜Iをアップロ`ドしたりしなくてよい
? GitHub Actions 參翌の OpenID プロバイダ への鬉眸殯廖
プロバイダ箸任鮉Iは(圻t議に)音勣。
? Sigstore の Cosign (keyless) に貌ているが、よりシンプルな撹
17
まとめ (壅)
スライド: https://github.com/AkihiroSuda
(^Presentation slides ̄ ★ ^2023 ̄ ★ ^20231102 ´ ̄)

More Related Content

Similar to [DockerConハイライト] OpenPubKeyによるイメ`ジの俸兆と編^.pdf (20)

GitHubのC嬬を試喘したGitHub Flowによる_kのMめ圭
GitHubのC嬬を試喘したGitHub Flowによる_kのMめ圭GitHubのC嬬を試喘したGitHub Flowによる_kのMめ圭
GitHubのC嬬を試喘したGitHub Flowによる_kのMめ圭
Takeshi Mikami
?
DevOps on Azure Kubernetes
DevOps on Azure KubernetesDevOps on Azure Kubernetes
DevOps on Azure Kubernetes
Issei Hiraoka
?
Metahub for github
Metahub for githubMetahub for github
Metahub for github
Suguru Oho
?
Docker並兵めと恷仟嗜 2015定6埖
Docker並兵めと恷仟嗜 2015定6埖Docker並兵めと恷仟嗜 2015定6埖
Docker並兵めと恷仟嗜 2015定6埖
Emma Haruka Iwao
?
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケ`ション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケ`ションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケ`ション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケ`ション
Kazuhiro Hara
?
CI/CD Pipeline を深える ?KubeCon 2017 + CyberAgent の恷寄巷蔚方?
CI/CD Pipeline を深える ?KubeCon 2017 + CyberAgent の恷寄巷蔚方?CI/CD Pipeline を深える ?KubeCon 2017 + CyberAgent の恷寄巷蔚方?
CI/CD Pipeline を深える ?KubeCon 2017 + CyberAgent の恷寄巷蔚方?
Masaya Aoyama
?
DockerCon '17 Feedback at PaaS JP
DockerCon '17 Feedback at PaaS JPDockerCon '17 Feedback at PaaS JP
DockerCon '17 Feedback at PaaS JP
Go Chiba
?
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
JUNICHI YOSHISE
?
Tekton 秘T
Tekton 秘TTekton 秘T
Tekton 秘T
Mamoru Shimizu
?
はてなにおける@A議デプロイメントのF彜と Docker の秘
はてなにおける@A議デプロイメントのF彜と Docker の秘はてなにおける@A議デプロイメントのF彜と Docker の秘
はてなにおける@A議デプロイメントのF彜と Docker の秘
Yu Nobuoka
?
GitLab から GitHub + CircleCI に\りQえてチ`ム\喘を個鋲しつつある
GitLab から GitHub + CircleCI に\りQえてチ`ム\喘を個鋲しつつあるGitLab から GitHub + CircleCI に\りQえてチ`ム\喘を個鋲しつつある
GitLab から GitHub + CircleCI に\りQえてチ`ム\喘を個鋲しつつある
R S
?
Getting Started With Ore-Ore Swift Standard Library +
Getting Started With Ore-Ore Swift Standard Library +Getting Started With Ore-Ore Swift Standard Library +
Getting Started With Ore-Ore Swift Standard Library +
Tomohiro Kumagai
?
遺庄姻界鉛艶遺鴛を聞った皆沿姻庄稼乙京看看岳/赫粥掘アプリ蝕kの紳併ノウハウ
遺庄姻界鉛艶遺鴛を聞った皆沿姻庄稼乙京看看岳/赫粥掘アプリ蝕kの紳併ノウハウ遺庄姻界鉛艶遺鴛を聞った皆沿姻庄稼乙京看看岳/赫粥掘アプリ蝕kの紳併ノウハウ
遺庄姻界鉛艶遺鴛を聞った皆沿姻庄稼乙京看看岳/赫粥掘アプリ蝕kの紳併ノウハウ
Takeshi Mikami
?
2021/03/19 パブリッククラウドを試かす\喘プロセス徭啝
2021/03/19 パブリッククラウドを試かす\喘プロセス徭啝2021/03/19 パブリッククラウドを試かす\喘プロセス徭啝
2021/03/19 パブリッククラウドを試かす\喘プロセス徭啝
Issei Hiraoka
?
禽看界一艶姻イメ`ジの尖盾とコンテナのライフサイクル
禽看界一艶姻イメ`ジの尖盾とコンテナのライフサイクル禽看界一艶姻イメ`ジの尖盾とコンテナのライフサイクル
禽看界一艶姻イメ`ジの尖盾とコンテナのライフサイクル
Masahito Zembutsu
?
Yocto Project ハンズオン プレゼン喘Y創
Yocto Project ハンズオン プレゼン喘Y創Yocto Project ハンズオン プレゼン喘Y創
Yocto Project ハンズオン プレゼン喘Y創
Nobuhiro Iwamatsu
?
Docker & Kubernetes児A
Docker & Kubernetes児ADocker & Kubernetes児A
Docker & Kubernetes児A
Daisuke Hiraoka
?
書だからこそ岑りたい Docker Compose/Swarm 秘T
書だからこそ岑りたい Docker Compose/Swarm 秘T書だからこそ岑りたい Docker Compose/Swarm 秘T
書だからこそ岑りたい Docker Compose/Swarm 秘T
Masahito Zembutsu
?
仇龍だけど丞議に宴旋になる赫庄岳堰顎恢リポジトリ譜協あれこれ
仇龍だけど丞議に宴旋になる赫庄岳堰顎恢リポジトリ譜協あれこれ仇龍だけど丞議に宴旋になる赫庄岳堰顎恢リポジトリ譜協あれこれ
仇龍だけど丞議に宴旋になる赫庄岳堰顎恢リポジトリ譜協あれこれ
Kazumi IWANAGA
?
Developing inside a Container
Developing inside a ContainerDeveloping inside a Container
Developing inside a Container
arukoh
?
GitHubのC嬬を試喘したGitHub Flowによる_kのMめ圭
GitHubのC嬬を試喘したGitHub Flowによる_kのMめ圭GitHubのC嬬を試喘したGitHub Flowによる_kのMめ圭
GitHubのC嬬を試喘したGitHub Flowによる_kのMめ圭
Takeshi Mikami
?
DevOps on Azure Kubernetes
DevOps on Azure KubernetesDevOps on Azure Kubernetes
DevOps on Azure Kubernetes
Issei Hiraoka
?
Metahub for github
Metahub for githubMetahub for github
Metahub for github
Suguru Oho
?
Docker並兵めと恷仟嗜 2015定6埖
Docker並兵めと恷仟嗜 2015定6埖Docker並兵めと恷仟嗜 2015定6埖
Docker並兵めと恷仟嗜 2015定6埖
Emma Haruka Iwao
?
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケ`ション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケ`ションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケ`ション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケ`ション
Kazuhiro Hara
?
CI/CD Pipeline を深える ?KubeCon 2017 + CyberAgent の恷寄巷蔚方?
CI/CD Pipeline を深える ?KubeCon 2017 + CyberAgent の恷寄巷蔚方?CI/CD Pipeline を深える ?KubeCon 2017 + CyberAgent の恷寄巷蔚方?
CI/CD Pipeline を深える ?KubeCon 2017 + CyberAgent の恷寄巷蔚方?
Masaya Aoyama
?
DockerCon '17 Feedback at PaaS JP
DockerCon '17 Feedback at PaaS JPDockerCon '17 Feedback at PaaS JP
DockerCon '17 Feedback at PaaS JP
Go Chiba
?
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
JUNICHI YOSHISE
?
はてなにおける@A議デプロイメントのF彜と Docker の秘
はてなにおける@A議デプロイメントのF彜と Docker の秘はてなにおける@A議デプロイメントのF彜と Docker の秘
はてなにおける@A議デプロイメントのF彜と Docker の秘
Yu Nobuoka
?
GitLab から GitHub + CircleCI に\りQえてチ`ム\喘を個鋲しつつある
GitLab から GitHub + CircleCI に\りQえてチ`ム\喘を個鋲しつつあるGitLab から GitHub + CircleCI に\りQえてチ`ム\喘を個鋲しつつある
GitLab から GitHub + CircleCI に\りQえてチ`ム\喘を個鋲しつつある
R S
?
Getting Started With Ore-Ore Swift Standard Library +
Getting Started With Ore-Ore Swift Standard Library +Getting Started With Ore-Ore Swift Standard Library +
Getting Started With Ore-Ore Swift Standard Library +
Tomohiro Kumagai
?
遺庄姻界鉛艶遺鴛を聞った皆沿姻庄稼乙京看看岳/赫粥掘アプリ蝕kの紳併ノウハウ
遺庄姻界鉛艶遺鴛を聞った皆沿姻庄稼乙京看看岳/赫粥掘アプリ蝕kの紳併ノウハウ遺庄姻界鉛艶遺鴛を聞った皆沿姻庄稼乙京看看岳/赫粥掘アプリ蝕kの紳併ノウハウ
遺庄姻界鉛艶遺鴛を聞った皆沿姻庄稼乙京看看岳/赫粥掘アプリ蝕kの紳併ノウハウ
Takeshi Mikami
?
2021/03/19 パブリッククラウドを試かす\喘プロセス徭啝
2021/03/19 パブリッククラウドを試かす\喘プロセス徭啝2021/03/19 パブリッククラウドを試かす\喘プロセス徭啝
2021/03/19 パブリッククラウドを試かす\喘プロセス徭啝
Issei Hiraoka
?
禽看界一艶姻イメ`ジの尖盾とコンテナのライフサイクル
禽看界一艶姻イメ`ジの尖盾とコンテナのライフサイクル禽看界一艶姻イメ`ジの尖盾とコンテナのライフサイクル
禽看界一艶姻イメ`ジの尖盾とコンテナのライフサイクル
Masahito Zembutsu
?
Yocto Project ハンズオン プレゼン喘Y創
Yocto Project ハンズオン プレゼン喘Y創Yocto Project ハンズオン プレゼン喘Y創
Yocto Project ハンズオン プレゼン喘Y創
Nobuhiro Iwamatsu
?
書だからこそ岑りたい Docker Compose/Swarm 秘T
書だからこそ岑りたい Docker Compose/Swarm 秘T書だからこそ岑りたい Docker Compose/Swarm 秘T
書だからこそ岑りたい Docker Compose/Swarm 秘T
Masahito Zembutsu
?
仇龍だけど丞議に宴旋になる赫庄岳堰顎恢リポジトリ譜協あれこれ
仇龍だけど丞議に宴旋になる赫庄岳堰顎恢リポジトリ譜協あれこれ仇龍だけど丞議に宴旋になる赫庄岳堰顎恢リポジトリ譜協あれこれ
仇龍だけど丞議に宴旋になる赫庄岳堰顎恢リポジトリ譜協あれこれ
Kazumi IWANAGA
?
Developing inside a Container
Developing inside a ContainerDeveloping inside a Container
Developing inside a Container
arukoh
?

More from Akihiro Suda (20)

20241115 [KubeCon NA Pavilion] Lima.pdf_
20241115 [KubeCon NA Pavilion] Lima.pdf_20241115 [KubeCon NA Pavilion] Lima.pdf_
20241115 [KubeCon NA Pavilion] Lima.pdf_
Akihiro Suda
?
20241113 [KubeCon NA Pavilion] containerd.pdf
20241113 [KubeCon NA Pavilion] containerd.pdf20241113 [KubeCon NA Pavilion] containerd.pdf
20241113 [KubeCon NA Pavilion] containerd.pdf
Akihiro Suda
?
‐秤鷽苫飛返の氏 (2024/09/14/なぜオ`プンソ`スソフトウェアにコントリビュ`トすべきなのか
‐秤鷽苫飛返の氏 (2024/09/14/なぜオ`プンソ`スソフトウェアにコントリビュ`トすべきなのか‐秤鷽苫飛返の氏 (2024/09/14/なぜオ`プンソ`スソフトウェアにコントリビュ`トすべきなのか
‐秤鷽苫飛返の氏 (2024/09/14/なぜオ`プンソ`スソフトウェアにコントリビュ`トすべきなのか
Akihiro Suda
?
‐Vuls疾り#10 (2024/08/20)/ VexLLM: LLMを喘いたVEX徭喇撹ツ`ル
‐Vuls疾り#10 (2024/08/20)/ VexLLM: LLMを喘いたVEX徭喇撹ツ`ル‐Vuls疾り#10 (2024/08/20)/ VexLLM: LLMを喘いたVEX徭喇撹ツ`ル
‐Vuls疾り#10 (2024/08/20)/ VexLLM: LLMを喘いたVEX徭喇撹ツ`ル
Akihiro Suda
?
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
Akihiro Suda
?
20240321 [KubeCon EU Pavilion] Lima.pdf_
20240321 [KubeCon EU Pavilion] Lima.pdf_20240321 [KubeCon EU Pavilion] Lima.pdf_
20240321 [KubeCon EU Pavilion] Lima.pdf_
Akihiro Suda
?
20240320 [KubeCon EU Pavilion] containerd.pdf
20240320 [KubeCon EU Pavilion] containerd.pdf20240320 [KubeCon EU Pavilion] containerd.pdf
20240320 [KubeCon EU Pavilion] containerd.pdf
Akihiro Suda
?
20240201 [HPC Containers] Rootless Containers.pdf
20240201 [HPC Containers] Rootless Containers.pdf20240201 [HPC Containers] Rootless Containers.pdf
20240201 [HPC Containers] Rootless Containers.pdf
Akihiro Suda
?
[Podman Special Event] Kubernetes in Rootless Podman
[Podman Special Event] Kubernetes in Rootless Podman[Podman Special Event] Kubernetes in Rootless Podman
[Podman Special Event] Kubernetes in Rootless Podman
Akihiro Suda
?
[KubeConNA2023] Lima pavilion
[KubeConNA2023] Lima pavilion[KubeConNA2023] Lima pavilion
[KubeConNA2023] Lima pavilion
Akihiro Suda
?
[KubeConNA2023] containerd pavilion
[KubeConNA2023] containerd pavilion[KubeConNA2023] containerd pavilion
[KubeConNA2023] containerd pavilion
Akihiro Suda
?
[CNCF TAG-Runtime] Usernetes Gen2
[CNCF TAG-Runtime] Usernetes Gen2[CNCF TAG-Runtime] Usernetes Gen2
[CNCF TAG-Runtime] Usernetes Gen2
Akihiro Suda
?
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
Akihiro Suda
?
The internals and the latest trends of container runtimes
The internals and the latest trends of container runtimesThe internals and the latest trends of container runtimes
The internals and the latest trends of container runtimes
Akihiro Suda
?
[KubeConEU2023] Lima pavilion
[KubeConEU2023] Lima pavilion[KubeConEU2023] Lima pavilion
[KubeConEU2023] Lima pavilion
Akihiro Suda
?
[KubeConEU2023] containerd pavilion
[KubeConEU2023] containerd pavilion[KubeConEU2023] containerd pavilion
[KubeConEU2023] containerd pavilion
Akihiro Suda
?
[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?
Akihiro Suda
?
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
Akihiro Suda
?
[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima
Akihiro Suda
?
[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS
Akihiro Suda
?
20241115 [KubeCon NA Pavilion] Lima.pdf_
20241115 [KubeCon NA Pavilion] Lima.pdf_20241115 [KubeCon NA Pavilion] Lima.pdf_
20241115 [KubeCon NA Pavilion] Lima.pdf_
Akihiro Suda
?
20241113 [KubeCon NA Pavilion] containerd.pdf
20241113 [KubeCon NA Pavilion] containerd.pdf20241113 [KubeCon NA Pavilion] containerd.pdf
20241113 [KubeCon NA Pavilion] containerd.pdf
Akihiro Suda
?
‐秤鷽苫飛返の氏 (2024/09/14/なぜオ`プンソ`スソフトウェアにコントリビュ`トすべきなのか
‐秤鷽苫飛返の氏 (2024/09/14/なぜオ`プンソ`スソフトウェアにコントリビュ`トすべきなのか‐秤鷽苫飛返の氏 (2024/09/14/なぜオ`プンソ`スソフトウェアにコントリビュ`トすべきなのか
‐秤鷽苫飛返の氏 (2024/09/14/なぜオ`プンソ`スソフトウェアにコントリビュ`トすべきなのか
Akihiro Suda
?
‐Vuls疾り#10 (2024/08/20)/ VexLLM: LLMを喘いたVEX徭喇撹ツ`ル
‐Vuls疾り#10 (2024/08/20)/ VexLLM: LLMを喘いたVEX徭喇撹ツ`ル‐Vuls疾り#10 (2024/08/20)/ VexLLM: LLMを喘いたVEX徭喇撹ツ`ル
‐Vuls疾り#10 (2024/08/20)/ VexLLM: LLMを喘いたVEX徭喇撹ツ`ル
Akihiro Suda
?
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
Akihiro Suda
?
20240321 [KubeCon EU Pavilion] Lima.pdf_
20240321 [KubeCon EU Pavilion] Lima.pdf_20240321 [KubeCon EU Pavilion] Lima.pdf_
20240321 [KubeCon EU Pavilion] Lima.pdf_
Akihiro Suda
?
20240320 [KubeCon EU Pavilion] containerd.pdf
20240320 [KubeCon EU Pavilion] containerd.pdf20240320 [KubeCon EU Pavilion] containerd.pdf
20240320 [KubeCon EU Pavilion] containerd.pdf
Akihiro Suda
?
20240201 [HPC Containers] Rootless Containers.pdf
20240201 [HPC Containers] Rootless Containers.pdf20240201 [HPC Containers] Rootless Containers.pdf
20240201 [HPC Containers] Rootless Containers.pdf
Akihiro Suda
?
[Podman Special Event] Kubernetes in Rootless Podman
[Podman Special Event] Kubernetes in Rootless Podman[Podman Special Event] Kubernetes in Rootless Podman
[Podman Special Event] Kubernetes in Rootless Podman
Akihiro Suda
?
[KubeConNA2023] Lima pavilion
[KubeConNA2023] Lima pavilion[KubeConNA2023] Lima pavilion
[KubeConNA2023] Lima pavilion
Akihiro Suda
?
[KubeConNA2023] containerd pavilion
[KubeConNA2023] containerd pavilion[KubeConNA2023] containerd pavilion
[KubeConNA2023] containerd pavilion
Akihiro Suda
?
[CNCF TAG-Runtime] Usernetes Gen2
[CNCF TAG-Runtime] Usernetes Gen2[CNCF TAG-Runtime] Usernetes Gen2
[CNCF TAG-Runtime] Usernetes Gen2
Akihiro Suda
?
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
Akihiro Suda
?
The internals and the latest trends of container runtimes
The internals and the latest trends of container runtimesThe internals and the latest trends of container runtimes
The internals and the latest trends of container runtimes
Akihiro Suda
?
[KubeConEU2023] Lima pavilion
[KubeConEU2023] Lima pavilion[KubeConEU2023] Lima pavilion
[KubeConEU2023] Lima pavilion
Akihiro Suda
?
[KubeConEU2023] containerd pavilion
[KubeConEU2023] containerd pavilion[KubeConEU2023] containerd pavilion
[KubeConEU2023] containerd pavilion
Akihiro Suda
?
[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?
Akihiro Suda
?
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
Akihiro Suda
?
[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima
Akihiro Suda
?
[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS
Akihiro Suda
?

Recently uploaded (6)

LF AI & DataでのOSS試咾函△修譴鮓司辛臘擇濃醵辰垢誑 - LF AI & Data Japan RUG Kick Off
LF AI & DataでのOSS試咾函△修譴鮓司辛臘擇濃醵辰垢誑 - LF AI & Data Japan RUG Kick OffLF AI & DataでのOSS試咾函△修譴鮓司辛臘擇濃醵辰垢誑 - LF AI & Data Japan RUG Kick Off
LF AI & DataでのOSS試咾函△修譴鮓司辛臘擇濃醵辰垢誑 - LF AI & Data Japan RUG Kick Off
Kosaku Kimura
?
XPJUGの\咾砲弔い董2022定のAWS DEV DAYでk燕した坪否です。
XPJUGの\咾砲弔い董2022定のAWS DEV DAYでk燕した坪否です。XPJUGの\咾砲弔い董2022定のAWS DEV DAYでk燕した坪否です。
XPJUGの\咾砲弔い董2022定のAWS DEV DAYでk燕した坪否です。
Toru Koido
?
(2025/03/03/10:07)皆温鉛艶壊鞄顎恢喘アスエネサ`ビス彿創.沿糸韓
(2025/03/03/10:07)皆温鉛艶壊鞄顎恢喘アスエネサ`ビス彿創.沿糸韓(2025/03/03/10:07)皆温鉛艶壊鞄顎恢喘アスエネサ`ビス彿創.沿糸韓
(2025/03/03/10:07)皆温鉛艶壊鞄顎恢喘アスエネサ`ビス彿創.沿糸韓
leesubin14
?
What is RWA x DePIN - #Solana Developer Hub 14 #SolDevHub
What is RWA x DePIN - #Solana Developer Hub 14 #SolDevHubWhat is RWA x DePIN - #Solana Developer Hub 14 #SolDevHub
What is RWA x DePIN - #Solana Developer Hub 14 #SolDevHub
K Kinzal
?
ChatGPT枠伏から僥ぶPYTHONプログラミング秘T - FUSIONDRIVER, INC.
ChatGPT枠伏から僥ぶPYTHONプログラミング秘T - FUSIONDRIVER, INC.ChatGPT枠伏から僥ぶPYTHONプログラミング秘T - FUSIONDRIVER, INC.
ChatGPT枠伏から僥ぶPYTHONプログラミング秘T - FUSIONDRIVER, INC.
FUSIONDRIVER, INC.
?
蛍裂モデル ‐クラウドアプリケ`ションのためのオブジェクト峺魴嵶Ov恙 及44指/
蛍裂モデル ‐クラウドアプリケ`ションのためのオブジェクト峺魴嵶Ov恙 及44指/蛍裂モデル ‐クラウドアプリケ`ションのためのオブジェクト峺魴嵶Ov恙 及44指/
蛍裂モデル ‐クラウドアプリケ`ションのためのオブジェクト峺魴嵶Ov恙 及44指/
Tomoharu ASAMI
?
LF AI & DataでのOSS試咾函△修譴鮓司辛臘擇濃醵辰垢誑 - LF AI & Data Japan RUG Kick Off
LF AI & DataでのOSS試咾函△修譴鮓司辛臘擇濃醵辰垢誑 - LF AI & Data Japan RUG Kick OffLF AI & DataでのOSS試咾函△修譴鮓司辛臘擇濃醵辰垢誑 - LF AI & Data Japan RUG Kick Off
LF AI & DataでのOSS試咾函△修譴鮓司辛臘擇濃醵辰垢誑 - LF AI & Data Japan RUG Kick Off
Kosaku Kimura
?
XPJUGの\咾砲弔い董2022定のAWS DEV DAYでk燕した坪否です。
XPJUGの\咾砲弔い董2022定のAWS DEV DAYでk燕した坪否です。XPJUGの\咾砲弔い董2022定のAWS DEV DAYでk燕した坪否です。
XPJUGの\咾砲弔い董2022定のAWS DEV DAYでk燕した坪否です。
Toru Koido
?
(2025/03/03/10:07)皆温鉛艶壊鞄顎恢喘アスエネサ`ビス彿創.沿糸韓
(2025/03/03/10:07)皆温鉛艶壊鞄顎恢喘アスエネサ`ビス彿創.沿糸韓(2025/03/03/10:07)皆温鉛艶壊鞄顎恢喘アスエネサ`ビス彿創.沿糸韓
(2025/03/03/10:07)皆温鉛艶壊鞄顎恢喘アスエネサ`ビス彿創.沿糸韓
leesubin14
?
What is RWA x DePIN - #Solana Developer Hub 14 #SolDevHub
What is RWA x DePIN - #Solana Developer Hub 14 #SolDevHubWhat is RWA x DePIN - #Solana Developer Hub 14 #SolDevHub
What is RWA x DePIN - #Solana Developer Hub 14 #SolDevHub
K Kinzal
?
ChatGPT枠伏から僥ぶPYTHONプログラミング秘T - FUSIONDRIVER, INC.
ChatGPT枠伏から僥ぶPYTHONプログラミング秘T - FUSIONDRIVER, INC.ChatGPT枠伏から僥ぶPYTHONプログラミング秘T - FUSIONDRIVER, INC.
ChatGPT枠伏から僥ぶPYTHONプログラミング秘T - FUSIONDRIVER, INC.
FUSIONDRIVER, INC.
?
蛍裂モデル ‐クラウドアプリケ`ションのためのオブジェクト峺魴嵶Ov恙 及44指/
蛍裂モデル ‐クラウドアプリケ`ションのためのオブジェクト峺魴嵶Ov恙 及44指/蛍裂モデル ‐クラウドアプリケ`ションのためのオブジェクト峺魴嵶Ov恙 及44指/
蛍裂モデル ‐クラウドアプリケ`ションのためのオブジェクト峺魴嵶Ov恙 及44指/
Tomoharu ASAMI
?

[DockerConハイライト] OpenPubKeyによるイメ`ジの俸兆と編^.pdf

  • 2. ? Moby (Docker Engineのupstream)、BuildKit、containerd、runc などの OSSのコミッタ ? 書定のDockerConでは ^Reproducible builds with BuildKit for software supply chain security ̄ にvして鞠 C https://medium.com/nttlabs/dockercon-2023-reproducible-builds-with-buildkit- for-software-supply-chain-security-0e5aedd1aaa7 ? 書?は??の函りMみについてではなく、 Docker芙?BastionZero 芙に よる OpenPubKey への函りMみについてB初 ? Reproducible builds にも OpenPubKey を?していきたいと房っている 2 ??B初
  • 3. ? 2023/10/4: Demystify Secure Supply Chain Metadata C Christian Dupuis, Sr Principal Engineer, Docker ? 2023/10/5: Building the Software Supply Chain on Docker Official Images C Ethan Heilman, CTO & Co-Founder, BastionZero James Carnegie, Computer Programmer, Docker ? https://www.dockercon.com/ からまだ辛嬬 3 DockerCon での OpenPubKey vBセッション
  • 5. ? OpenID Connect (OIDC) を?し、巷_I児Pとして聞えるようにしたもの ^In essence, OpenPubkey is a protocol for getting OpenID Providers (OPs) to bind identities to public keys. ̄ ( https://github.com/openpubkey/openpubkey ) ? 箭えば、GitHub Actions 貧でDockerイメ`ジをビルドするHに、GitHubリポジト リのorganization IDを根む俸兆を原紗できる ? GitHub Actions の Secrets に蜘畜Iをアップロ`ドしたりしなくてよい ? GitHub Actions 參翌の OpenID プロバイダ への鬉眸殯廖 プロバイダ箸任鮉Iは(圻t議に)音勣。 ? Sigstore の Cosign (keyless) に貌ているが、よりシンプルな撹 5 OpenPubKey
  • 6. ? GitHub ActionsのYAML: https://github.com/openpubkey/demo ? BuildKit へのパッチ (隆マ`ジ): https://github.com/openpubkey/buildkit/tree/opk-signing ? docker verify コマンド: https://github.com/openpubkey/verify-docker-cli-plugin 6 DockerConでのOpenPubKeyのデモ
  • 7. 7 GitHub Actions の YAML - name: Setup Docker buildx uses: docker/setup-buildx-action@v3.0.0 with: driver-opts: | image=openpubkey/buildkit:opk-signing env.ACTIONS_ID_TOKEN_REQUEST_URL=${{ env.ACTIONS_ID_TOKEN_REQUEST_URL }} env.ACTIONS_ID_TOKEN_REQUEST_TOKEN=${{ env.ACTIONS_ID_TOKEN_REQUEST_TOKEN }} - name: Build and push Docker image on push id: build-and-push uses: docker/build-push-action@v4.0.0 with: context: . push: true ´ sbom: true provenance: true ´ https://github.com/openpubkey/demo/blob/6b29027/.github/workflows/docker-build.yaml
  • 8. 8 GitHub Actions の YAML - name: Setup Docker buildx uses: docker/setup-buildx-action@v3.0.0 with: driver-opts: | image=openpubkey/buildkit:opk-signing env.ACTIONS_ID_TOKEN_REQUEST_URL=${{ env.ACTIONS_ID_TOKEN_REQUEST_URL }} env.ACTIONS_ID_TOKEN_REQUEST_TOKEN=${{ env.ACTIONS_ID_TOKEN_REQUEST_TOKEN }} - name: Build and push Docker image on push id: build-and-push uses: docker/build-push-action@v4.0.0 with: context: . push: true ´ sbom: true provenance: true ´ https://github.com/openpubkey/demo/blob/6b29027/.github/workflows/docker-build.yaml GitHub により?啜弔穆O協される OIDCvBのh廠篳を BuildKit デ`モン に参イ気擦 OpenPubKeyに鬉靴 fork を峺協する https://github.com/openpubkey/buildkit SBOMおよびSLSA Provenance (ビルド秤) を イメ`ジに原紗する。 磴擦董SBOMやSLSA Provenance にする俸兆 (i.e., イメ`ジにする俸兆) も原紗する。
  • 9. ? Docker CLI プラグインとして戻工 https://github.com/openpubkey/verify-docker-cli-plugin ? Docker Hub 貧のイメ`ジ ^openpubkey/demo@sha256´ ̄ が、GitHub organization ^openpubkey ̄ の GitHub Actions でビルドされたことを_J できた ? ただし、GitHub Actions のキ`セット (https://token.actions.githubusercontent.com/.well-known/jwks) を佚mで きる念戻 9 docker verify コマンド $ gh api /orgs/openpubkey | jq .id 145685596 $ docker verify openpubkey/demo@sha256:6acf54fca0e7f9e9ef3d23c9b9ee306ce3c56b8315aa756643e4df25032bcdbe --repo-owner-id 145685596 ´ Verified all required attestations are present
  • 10. 10 docker verify コマンド (竃?畠悶) $ docker verify openpubkey/demo@sha256:6acf54fca0e7f9e9ef3d23c9b9ee306ce3c56b8315aa756643e4df25032bcdbe --repo-owner-id 145685596 Verifying 2 attestations for pkg:docker/openpubkey/demo?digest=sha256:6acf54fca0e7f9e9ef3d23c9b9ee306ce3c56b8315aa756643e4df25032bcdbe&platform =linux/amd64 Verifying https://spdx.dev/Document attestation ? Verified attestation refers to digest sha256:6fbb78f2482a527575558d85147aee5f5f9f5288133bb0af316f91ed525a7246 ? Verified OIDC token was signed by https://token.actions.githubusercontent.com ? Verified attestation digest was signed on a Github Actions run: https://github.com/openpubkey/demo/actions/runs/6628798402 ? Verified repository owner 145685596 (openpubkey) Verifying https://slsa.dev/provenance/v0.2 attestation ? Verified attestation refers to digest sha256:6fbb78f2482a527575558d85147aee5f5f9f5288133bb0af316f91ed525a7246 ? Verified OIDC token was signed by https://token.actions.githubusercontent.com ? Verified attestation digest was signed on a Github Actions run: https://github.com/openpubkey/demo/actions/runs/6628798402 ? Verified repository owner 145685596 (openpubkey) ? Verified signed git sha provenance 6b29027d7ddae1c2dcdcfb88ab402473af5d20c8 ? Verified signed git repo provenance openpubkey/demo Verified all required attestations are present
  • 11. 11 フロ` (1/2) BuildKit (OpenPubKey鬦) GitHub Actions $ACTIONS_ID_TOKEN_REQUEST_TOKEN $ACTIONS_ID_TOKEN_REQUEST_URL HTTP GET $ACTIONS_ID_TOKEN_REQUEST_URL &audience=$AUDIENCE ^Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN ̄ ? ID Token をk?するための Bearer Token をk? ? イメ`ジをビルドし、 provenanceを?撹 ? ?指泙蠅嶺Iペアを?撹 ? Client-Instance Claim (CIC) を ?撹 {`rz¨: random(), `upk¨: publicKey, `alg¨: `EC256¨, `att¨: provenenceHash} ? CIC のハッシュを ^audience ̄ としてID Tokenのk?を勣箔 ☆CIC のハッシュは、GitHub Actions などの workload identity では audience に根めるが、user identity では nonce に根める。 audience (GHAのデフォルトでは リポジトリ のURL) には販吭の?忖双をいれてよいので OIDCのAPIを筝せずにCICのハッシュを僕る ことができる
  • 12. 12 フロ` (2/2) BuildKit (OpenPubKey鬦) GitHub Actions ID Token: ^SUBSTR0.SUBSTR1.SUBSTR2 ̄ ? SUBSTR0: ヘッダ の base64 ? SUBSTR1: ペイロ`ドの base64 (^aud ̄ などを根む) ? SUBSTR2:  ̄SUBST0.SUBST1 ̄ にする 俸兆 ? 鞭け函った Bearer Token が 栽っていれば、ID Token をk ?する ? ID Tokenの麼なペイロ`ド: ? ^aud ̄ (audience) ? ^repository_owner_id ̄ (GitHubのorgのID) ? ^run_id ̄ (GHAのjobの g?ID) ? ID Tokenは、GHA??が隔っ ているIで俸兆される ? ?隔ちのCICと、GHAから鞭 け函ったID TokenとをMみ栽 わせ、俸兆し、 PK Token を 撹する。これをイメ`ジに 原紗する。 ? Guillou-Quisquater (GQ) 俸兆 により、圷のID Tokenの、 L盈される (ペイロ`ドの 何蛍は巷_される) (念) CIC: Client-Instance Claim: {`rz¨: random(), `upk¨: publicKey, `alg¨: `EC256, `att¨: provenanceHash} audience: ここでは CICのハッシュ ID Token がIペアに~づく ☆GQ俸兆はworkload identityでは駅、user identity では販吭 GHAの栽はペイロ`ドが巷_されて}ないが、 麿のOpenIDプロバイダでは篇が駅勣そう
  • 16. 16 { "payloadType":"application/vnd.in-toto+json", "payload": ´, "signatures":[{"keyid":"OPK","sig": ´}] } { "payload": ´, "signatures": [ {"protected": ´, "header": {"sig_type": "cic"}, "signature": ´}, {"protected": ´, "header": {"sig_type": "oidc_gq"}, "signature": ´} ] } .signatures[0].sig { "jti": "66e345cc-0806-42a0-a346-7b98dc8ab2c0", "sub": "repo:openpubkey/demo:ref:refs/heads/main", "aud": "5km4t6i4IPk-tnv4qlmCcryfY0O-4PCNWOmFCJZJrzI", "ref": "refs/heads/main", "sha": "6b29027d7ddae1c2dcdcfb88ab402473af5d20c8", "repository": "openpubkey/demo", "repository_owner": "openpubkey", "repository_owner_id": "145685596", "run_id": "6628798402", "repository_id": "698282570", "iss": https://token.actions.githubusercontent.com ´, } .payload { "alg": "ES256", "att": ´ "rz": ´, "upk": {"alg": "ES256", "crv": "P-256", "kty": "EC", "x": ´, "y": ´ } } { "typ": "JWT", "alg": "RS256", "x5t": "AB3c0BSoSOiCRXez5POu2zvPX_0", "kid": "001DDCD014A848E8824577B3E4F3AEDB3BCF5FFD" } .signatures[0].protected .signatures[1].protected application/vnd.in-toto.provenance+dsse (SLSA Provenance) .payload
  • 17. ? OpenID Connect (OIDC) を?し、巷_I児Pとして聞えるようにしたもの ^In essence, OpenPubkey is a protocol for getting OpenID Providers (OPs) to bind identities to public keys. ̄ ( https://github.com/openpubkey/openpubkey ) ? 箭えば、GitHub Actions 貧でDockerイメ`ジをビルドするHに、GitHubリポジトリの organization IDを根む俸兆を原紗できる ? GitHub Actions の Secrets に蜘畜Iをアップロ`ドしたりしなくてよい ? GitHub Actions 參翌の OpenID プロバイダ への鬉眸殯廖 プロバイダ箸任鮉Iは(圻t議に)音勣。 ? Sigstore の Cosign (keyless) に貌ているが、よりシンプルな撹 17 まとめ (壅) スライド: https://github.com/AkihiroSuda (^Presentation slides ̄ ★ ^2023 ̄ ★ ^20231102 ´ ̄)