ฉันใช้เวลาสักครู่ แต่ในที่สุดฉันก็สรุปความคิดของฉันไว้ที่นี่: https://dev.to/viniciuskneves/use-aws-through-github-actions-without-secret-keys-32eo
มีแนวคิดที่จะใช้ OpenID เชื่อมต่อ ถึง เชื่อมต่อกับ GitHub จากนั้นมีบทบาทที่สามารถสันนิษฐานได้โดย GitHub Actions และดำเนินการปรับใช้ (นโยบายเดียวกันกับที่ฉันให้กับผู้ใช้ GitHub Actions)
การใช้ AWS CDK โซลูชันจะมีลักษณะดังนี้:
ผู้ให้บริการ const = OpenIdConnectProvider ใหม่ (นี่คือ "GitHubProvider", {
URL: "https://token.actions.githubusercontent.com",
clientIds: ["sts.amazonaws.com"], // อ้างอิงเป็น "Audience" ในเอกสารประกอบ
});
บทบาท const = บทบาทใหม่ (นี่คือ "บทบาท", {
สันนิษฐานโดย: OpenIdConnectPrincipal ใหม่ (ผู้ให้บริการ {
สตริงเท่ากับ: {
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com", // "Audience" จากด้านบน
},
สตริงไลค์: {
"token.actions.githubusercontent.com:sub":
"repo:<ORGANIZATION>/<REPOSITORY>:*", // องค์กรและพื้นที่เก็บข้อมูลที่ได้รับอนุญาตให้รับบทบาทนี้
},
}),
});
bucket.grantPut (บทบาท); // สร้างนโยบาย
หลังจากนั้น เราจำเป็นต้องอัปเดต GitHub Actions เพื่อใช้แทนคีย์ผู้ใช้ของเรา:
...
สิทธิ์:
รหัสโทเค็น: เขียน
เนื้อหา: อ่าน # สิ่งนี้จำเป็นสำหรับการดำเนินการ / ชำระเงิน (เอกสาร GitHub กล่าวถึงสิ่งนั้น)
...
- ชื่อ: กำหนดค่า AWS Credentials
ใช้: aws-actions/[email protected] # เวอร์ชัน ณ เวลาที่เขียนนี้
ด้วย: # เรากำลังโหลดกุญแจที่เก็บไว้ในความลับ
role-to-assume: arn:aws:iam::<ACCOUNT>:role/<ROLE-NAME> # คุณสามารถระบุชื่อบทบาทได้เมื่อสร้าง มิฉะนั้น AWS จะสร้างชื่อให้คุณโดยอัตโนมัติ
ภูมิภาค aws: eu-central-1
- run: npm run deploy # แค่ตัวอย่าง