Open1
備忘: GitHub ActionsでAWSのOIDCをする時の権限
GitHub ActionsでAWSにアクセスするときにOIDCでの認証をしているときに、いつもある権限がないと叱られている。
備忘のために残しておく。
必要な権限について
id-tokenへのwrite権限が必要。
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
id-token permissionってなんだ
これをいれることでGitHubのOIDC ProviderにJSON Web Tokenを作成を許可するための権限。
ID Tokenは認証として自分がだれかを示すためのToken。
以下のような属性を持つJSON Web Tokenを持っている。
interface ID_Token {
iss: url; // Issuer Identifier
sub: string; // Subject Identifier
aud: string[]; // Audience
exp: number; // Expiration date [UNIXtime]
iat: number; // Issued at [UNIXtime]
auth_time?: number; // End-User authentication time [UNIXtime]
nonce?: string;
acr?: string; // Authentication Context Class Reference
amr?: string[]; // Authentication Methods References
azp?: string; // authorized party
at_hash?: string;
c_hash?: string;
sub_jwk?: object;
anything_you_want?: any;
}
issが発行者、subが対象者、audがだれがそのTokenを受け取るのかを指定している。
audとsubに使われる値
AWSの場合は通常sts.amazonaws.com
が利用される。
大体の場合はそれで足りるのだがChine Regionの時だけは設定が必要。
subはそのTokenを発行するユーザーの識別子。
だから、AWSやAzureの場合はsubにはrepositryやbranchが指定されるということになり、audienceにはそのTokenを引き受ける対象のCloudのデフォルト値で問題がないということになる。
無条件にid-tokenを発行させないためにもsubの指定が重要になりそう。