კონტენტზე გადასვლა

ავთენტიკაცია

სერვერთან ურთიერთობისთვის CLI-ს სჭირდება მოთხოვნების ავთენტიკაცია bearer authentication-ის გამოყენებით. CLI მხარდაჭერას უწევს ავთენტიკაციას როგორც მომხმარებლად, ისე ანგარიშად, ან OIDC ტოკენის გამოყენებით.

როგორც მომხმარებელი#

როდესაც CLI-ს იყენებთ ლოკალურად თქვენს მანქანაზე, ჩვენ გირჩევთ ავთენტიკაციას როგორც მომხმარებელი. მომხმარებლად ავთენტიკაციისთვის უნდა გაუშვათ შემდეგი ბრძანება:

bash
tuist auth login

ბრძანება გაგივლით ვებზე დაფუძნებულ ავთენტიკაციის პროცესს. ავთენტიკაციის შემდეგ, CLI შეინახავს ხანგრძლივი ვადის განახლების ტოკენს და მოკლე ვადის წვდომის ტოკენს ~/.config/tuist/credentials ქვეშ. დირექტორიაში არსებული თითოეული ფაილი წარმოადგენს დომენს, რომლის მიმართაც მოხდა ავთენტიკაცია, რაც ნაგულისხმევად უნდა იყოს tuist.dev.json. ამ დირექტორიაში შენახული ინფორმაცია მგრძნობიარეა, ამიტომ დარწმუნდით, რომ ის უსაფრთხოდ შეინახეთ.

CLI ავტომატურად მოიძიებს სერთიფიკატებს სერვერთან მოთხოვნების გაკეთებისას. თუ წვდომის ტოკენი ვადაგასულია, CLI გამოიყენებს განახლების ტოკენს ახალი წვდომის ტოკენის მისაღებად.

Note

თუ თქვენი ორგანიზაცია იყენებს ერთჯერად შესვლას (SSO), ბრაუზერში აირჩიეთ საწარმოს შესვლის ვარიანტი და შეიყვანეთ სამუშაო ელფოსტის მისამართი. Tuist-ს შეუძლია პროვაიდერის პოვნა თქვენი არსებული ორგანიზაციის წევრობიდან ან დადასტურებული შესვლის ელფოსტის დომენიდან.

OIDC ტოკენები#

CI გარემოებისთვის, რომლებიც მხარს უჭერენ OpenID Connect-ს (OIDC), Tuist-ს შეუძლია ავტომატური ავთენტიკაცია ხანგრძლივი ვადის საიდუმლოების მართვის საჭიროების გარეშე. მხარდაჭერილ CI გარემოში გაშვებისას, CLI ავტომატურად აღმოაჩენს OIDC ტოკენის პროვაიდერს და ცვლის CI-ს მიერ მოწოდებულ ტოკენს Tuist-ის წვდომის ტოკენზე.

მხარდაჭერილი პროვაიდერები#

Tuist ცნობს ამ CI პროვაიდერებს და ასახავს მათ ტოკენებს პროექტებზე თქვენი რეპოზიტორიის კავშირის მეშვეობით:

  • GitHub Actions
  • CircleCI
  • Bitrise

ნებისმიერი სხვა იდენტობის პროვაიდერი, რომელიც გასცემს OpenID Connect ტოკენებს, შეუძლია ავთენტიკაცია workload identity trust policy-ის მეშვეობით, რომელსაც ერთხელ აკონფიგურირებთ თქვენი ანგარიშის ყველა მიმდინარე და მომავალი პროექტისთვის, მაგალითად Fly.io Machines.

OIDC ავთენტიკაციის დაყენება#

GitHub Actions-ის, CircleCI-ის და Bitrise-ისთვის:

  1. დააკავშირეთ თქვენი რეპოზიტორია Tuist-თან: მიჰყევით GitHub ინტეგრაციის სახელმძღვანელოს, რათა დააკავშიროთ თქვენი GitHub რეპოზიტორია თქვენს Tuist პროექტთან.

  2. გაუშვით tuist auth login: თქვენს CI სამუშაო პროცესში, გაუშვით tuist auth login ნებისმიერ ბრძანებამდე, რომელიც მოითხოვს ავთენტიკაციას. CLI ავტომატურად აღმოაჩენს CI გარემოს და ავთენტიკაციას მოახდენს OIDC-ის გამოყენებით.

იხილეთ Continuous Integration სახელმძღვანელო პროვაიდერის სპეციფიკური კონფიგურაციის მაგალითებისთვის.

Workload identity trust policies#

ნდობის პოლიტიკა საშუალებას აძლევს სხვა იდენტობის პროვაიდერის workloads-ს, როგორიცაა განლაგების პლატფორმა, Kubernetes კლასტერი ან თვითმართვადი CI სისტემა, მიიღონ წვდომა პროექტზე ხანგრძლივი ვადის Tuist საიდუმლოს გარეშე. პროვაიდერმა უნდა:

  • იყოს ხელმისაწვდომი HTTPS-ით საჯარო მისამართზე. Tuist არ მიჰყვება გადამისამართებებს და არ უკავშირდება პირად ან შიდა ქსელის მისამართებს, მათ შორის თვითმასპინძელი Tuist სერვერებიდან.
  • გასცეს JWT-ები, ხელმოწერილი ასიმეტრიული გასაღებით, მაგალითად RS256 ან ES256. ხელმოუწერილი ტოკენები და ტოკენები, ხელმოწერილი გაზიარებული საიდუმლოთი (HS256 და მსგავსი), უარყოფილია.
  • გამოაქვეყნოს თავისი ხელმოწერის გასაღებები JSON Web Key Set-ად (JWKS) ფიქსირებულ HTTPS URL-ზე. პასუხი უნდა იყოს მაქსიმუმ 64 KiB და შეიცავდეს მაქსიმუმ 20 გასაღებს.
  • შეიცავდეს ვადის გასვლას (exp) ყოველ ტოკენში.

GitHub Actions-ის, CircleCI-ის და Bitrise-ის გამცემები რეზერვირებულია ზემოთ აღწერილი რეპოზიტორიაზე დაფუძნებული ნაკადისთვის და არ შეიძლება მათი გამოყენება ნდობის პოლიტიკაში.

Note

თვითმასპინძელი განლაგებისთვის, გამოიყენეთ მონაცემთა ბაზის მიგრაციები და განაახლეთ Tuist სერვერის ყოველი მომსახურე რეპლიკა workload identities-ის კონფიგურაციამდე ან სამუშაოების მათზე გადატანამდე. შემდეგ განაახლეთ CLI ან Elixir ინტეგრაცია ვერსიამდე, რომელიც მხარს უჭერს TUIST_OIDC_TOKEN და TUIST_OIDC_ACCOUNT. არსებული GitHub Actions-ის, CircleCI-ის და Bitrise-ის სამუშაოები აგრძელებენ რეპოზიტორიაზე დაფუძნებული ავტორიზაციის გამოყენებას და არ საჭიროებენ ანგარიშის handle-ს. პროდუქციის სამუშაოებზე გადასვლამდე, შეამოწმეთ მოკლე ვადის ტოკენის გაცვლა და cache ოპერაცია სასურველ workload-თან. ახალი გაცვლების შესაჩერებლად, წაშალეთ პოლიტიკა; მიეცით ერთ საათამდე დრო უკვე გაცემული Tuist წვდომის ტოკენების ვადის გასვლისთვის. პოლიტიკის წაშლა არ აუქმებს დაუყოვნებლივ ამ ტოკენებს.

პოლიტიკის შექმნა#

Tuist dashboard-ში, გახსენით თქვენი ანგარიშის Settings > Authentication და იპოვეთ Workload identities სექცია. თქვენ უნდა იყოთ ანგარიშის ადმინისტრატორი (ან პირადი ანგარიშის მფლობელი). თითოეულ ანგარიშს შეიძლება ჰქონდეს მაქსიმუმ 20 პოლიტიკა. კონფიგურაცია მოახდინეთ იდენტობის ერთხელ ანგარიშის მასშტაბით CI წვდომისთვის; პროექტის შერჩევა არ არის საჭირო.

გამოიყენეთ გადამრთველი Workload identities-ის გვერდით პოლიტიკის ფორმის გასახსნელად. გადამრთველი ირთვება, როდესაც ანგარიშს აქვს შენახული იდენტობები და რჩება ჩართული შენახვის შემდეგ. ის იწყება გამორთული ანგარიშებისთვის იდენტობების გარეშე. სექცია ჩნდება SCIM provisioning-ის ქვემოთ ორგანიზაციებისთვის. ფორმის დამალვა ინარჩუნებს თქვენს პროექტს და არ თიშავს workload ავთენტიკაციას: შენახული იდენტობის ბარათები და დაყენების დოკუმენტაციის ბმული რჩება ხილული. თითოეული ბარათი აჩვენებს იდენტობის სახელს, გამცემის და JWKS URL-ებს, აუდიენციას, ზუსტ JSON claims-ებს, ანგარიშის მასშტაბის მოცულობას და შექმნის დროს. წაშალეთ იდენტობა მის ბარათზე არსებული მოქმედების გამოყენებით.

აირჩიეთ Custom provider ქვემოთ მოცემული ველების შესაყვანად, ან Fly.io Machines მათი გენერირებისთვის თქვენი ორგანიზაციის slug-ის და რიცხვითი ორგანიზაციის და აპლიკაციის ID-ებისგან. Fly შაბლონი ინარჩუნებს გენერირებულ გამცემს, JWKS URL-ს და claims-ებს რედაქტირებადს Advanced configuration-ის ქვეშ. შაბლონების ან დამხმარე მნიშვნელობების შეცვლა ინარჩუნებს ხელით რედაქტირებულ ველებს. თუ თქვენი გამცემი, JWKS URL ან claims-ები გადაფარავს შაბლონს, Tuist გააფართოებს Advanced configuration-ს და აჩვენებს გაფრთხილებას, რათა შეძლოთ შენახული პოლიტიკის გადახედვა. დაუბრუნდით Custom provider-ს Fly-ის დამხმარეების გარეშე გასაგრძელებლად. შაბლონები მხოლოდ ავსებენ კონფიგურაციას და არ ცვლიან იმას, თუ როგორ ამოწმებს Tuist ტოკენებს.

ველიაღწერა
სახელიპოლიტიკის ამოსაცნობი ლეიბლი, უნიკალური ანგარიშის ფარგლებში.
გამცემის URLტოკენის iss claim. ის უნდა ემთხვეოდეს ზუსტად, ნებისმიერი ბოლო სლეშის ჩათვლით.
JWKS URLპროვაიდერის ხელმოწერის გასაღებების HTTPS URL. Tuist იყენებს ამ URL-ს პირდაპირ და არ კითხულობს პროვაიდერის OpenID Connect აღმოჩენის დოკუმენტს, ამიტომ დააკოპირეთ jwks_uri პროვაიდერის დოკუმენტაციიდან ან <issuer>/.well-known/openid-configuration-დან.
აუდიტორიააუდიტორია, რომლისთვისაც უნდა გაიცეს ტოკენი, ნაგულისხმევად tuist. ტოკენის aud უნდა ემთხვეოდეს მას ან, როცა aud სიაა, შეიცავდეს მას. გამოიყენეთ მნიშვნელობა, რომელსაც მხოლოდ Tuist იღებს, რათა სხვა სერვისებისთვის გამოშვებული ტოკენები ვერ განმეორდეს აქ.
ClaimsJSON ობიექტი 1-დან 10-მდე claim-ით, რომელიც ტოკენმა უნდა შეიცავდეს, მაგალითად {"sub": "system:serviceaccount:ci:builder"}. JSON შეყვანა შემოიფარგლება 8 KiB-ით. მნიშვნელობები უნდა იყოს სტრინგები, ნიშნიანი 64-ბიტიანი მთელი რიცხვები ან ბულიანები და ისინი უნდა ემთხვეოდნენ ზუსტად, მათი ტიპის ჩათვლით: "123" არ ემთხვევა 123-ს. ჩადგმული ობიექტები, სიები და დროის ან ტოკენის claims-ები, როგორიცაა iss, aud, exp, nbf, iat და jti, არ არის დაშვებული.

თითოეული პოლიტიკა ანიჭებს CI წვდომას ანგარიშის კუთვნილ ყველა მიმდინარე და მომავალ პროექტზე, ინდივიდუალური პროექტების შერჩევის გარეშე. თქვენ შეგიძლიათ დააკონფიგურიროთ იდენტობა პირველი პროექტის შექმნამდე. ეს არ ანიჭებს ანგარიშის ადმინისტრირებას ან წვდომას სხვა ანგარიშზე.

ნებისმიერი სამუშაო დატვირთვა, რომელსაც შეუძლია მიიღოს ტოკენი შესაბამისი claims-ებით, შეუძლია წვდომა ჰქონდეს ყველა ამ პროექტზე, ამიტომ აირჩიეთ claims-ები, რომლებსაც პროვაიდერი გარანტირებს და რომელთა ხელახლა გამოყენება ვერავის შეუძლია. უპირატესობა მიანიჭეთ სტაბილურ რიცხვით ID-ებს სახელების ნაცვლად, რომლებიც შეიძლება გადაერქვა ან ხელახლა დარეგისტრირდეს წაშლის შემდეგ.

Warning

გაზიარებულ იდენტობის პროვაიდერზე, დააკავშირეთ პოლიტიკა თქვენს ორგანიზაციას ან არენდატორს და სასურველ აპლიკაციას, პროექტს ან სერვისის ანგარიშს. შტოს სახელი, როგორიცაა main, გარემო, როგორიცაა production, ან ზოგადი როლი მარტო არ არის იდენტობის საზღვარი: სხვა არენდატორმა შეიძლება მიიღოს ტოკენი იგივე მნიშვნელობებით. მაგალითად, GitLab.com პოლიტიკამ უნდა შეიცავდეს სასურველი პროექტის სტაბილურ project_id-ს, არა მხოლოდ ref-ს. შესაბამისი ტოკენი ანიჭებს ანგარიშის მასშტაბით CI წვდომას, cache-ში ჩაწერის ჩათვლით, ამიტომ პოლიტიკამ, რომელიც ენდობა არარელევანტურ სამუშაო დატვირთვებს, შეიძლება დაუშვას cache-ის მოწამვლა.

Tuist ანიჭებს წვდომას მხოლოდ იმ პოლიტიკებისთვის, რომელთა საკუთარი JWKS URL შეიცავს გასაღებს, რომლითაც ტოკენი არის ხელმოწერილი, გამცემის, აუდიტორიის, ვადის, not-before დროის (60 წამამდე საათის ცდომილებით) და ყოველი claim-ის შემოწმების შემდეგ. გამოშვებული ერთსაათიანი CI ტოკენი არის ანგარიშის მასშტაბით, არა პროექტების ID-ების სნეპშოტი: ის მოიცავს პროექტებს, რომლებიც შეიქმნა ან გადაიტანეს ანგარიშზე გამოშვების შემდეგ. პროექტის ავტორიზაცია კვლავ მოითხოვს მიმდინარე ანგარიშის კუთვნილებას, ამიტომ პროექტის გადატანა აშორებს მის წვდომას ამ ანგარიშის ტოკენის ქვეშ.

სამუშაო დატვირთვის ავტენტიკაცია#

  1. მოითხოვეთ იდენტობის ტოკენი თქვენი პროვაიდერისგან პოლიტიკის აუდიტორიით.
  2. დააყენეთ TUIST_OIDC_TOKEN ამ ტოკენზე და TUIST_OIDC_ACCOUNT იმ Tuist ანგარიშის handle-ზე, რომელსაც ეკუთვნის პროექტი. ანგარიში საჭიროა ყოველი trust policy გაცვლისთვის. ის მხოლოდ ირჩევს სად უნდა მოხდეს ძიება და თავისთავად არაფერს ანიჭებს.
  3. გაუშვით tuist auth login. Elixir პროექტებისთვის, შეგიძლიათ გამოიყენოთ mix tuist.login ამის ნაცვლად, ან დაუშვათ Elixir ინტეგრაციამ ავტომატურად გაცვალოს ტოკენი, როცა არ არის ხელმისაწვდომი TUIST_TOKEN ან ვალიდური შენახული სერთიფიკატები.

მიღებულ Tuist წვდომის ტოკენს აქვს მხოლოდ ci scope ჯგუფი და მოიცავს არჩეული ანგარიშის კუთვნილ ყველა მიმდინარე და მომავალ პროექტს. გაცვლები მარცხდება, თუ ანგარიშში 20-ზე მეტი პოლიტიკა ემთხვევა ერთსა და იმავე ტოკენს ან თუ ისინი იყენებენ ორზე მეტ განსხვავებულ JWKS URL-ს.

Tuist არ აახლებს ამ სესიებს. წვდომის ტოკენები იწურება ერთი საათის შემდეგ და არ აქვთ განახლების ტოკენი. პროვაიდერის იდენტობის ტოკენები ხშირად ვალიდურია მხოლოდ რამდენიმე წუთის განმავლობაში, ამიტომ ძველი TUIST_OIDC_TOKEN-ის შენახვა არ არის განახლების სტრატეგია: სამუშაოებისთვის, რომლებიც ერთ საათზე მეტხანს გრძელდება, მოითხოვეთ ახალი იდენტობის ტოკენი და ხელახლა შედით სისტემაში Tuist სესიის ამოწურვამდე. პოლიტიკის წაშლა აჩერებს ახალ გაცვლებს, მაგრამ უკვე გამოშვებული წვდომის ტოკენები რჩება ვალიდურად მათ ამოწურვამდე.

Tuist აქეშირებს პროვაიდერის ხელმოწერის გასაღებებს 15 წუთის განმავლობაში წარმატებული მიღების შემდეგ სპეციალურ, ზომით შეზღუდულ cache-ში. ჩანაწერები შეიძლება ადრე ამოიღონ და ხელახლა მიიღონ. წარუმატებელი მიღებები არ აქეშირდება. თუ თქვენი პროვაიდერი აბრუნავს გასაღებებს, მან უნდა გამოაქვეყნოს ახალი გასაღები თავის JWKS-ში ტოკენებით მისი ხელმოწერამდე სულ მცირე 15 წუთით ადრე, რადგან ტოკენები, რომლებიც ხელმოწერილია გასაღებით, რომელიც არ არის აქეშირებულ ნაკრებში, უარყოფილი იქნება cache-ის ამოწურვამდე. ტოკენები გასაღების ID-ის (kid) გარეშე მიღებულია მხოლოდ მაშინ, როცა JWKS შეიცავს ერთ შესაბამის ხელმოწერის გასაღებს. როცა JWKS-ში არის გასაღების ID, ის უნდა იყოს სტრინგი მაქსიმუმ 256 ბაიტისა.

Note

TUIST_OIDC_TOKEN არის ზოგადი ტოკენის შეყვანა, არა სერვერის ნდობის გვერდის ავლის გზა. ის უპირატესობას ანიჭებს CI პროვაიდერის აღმოჩენას და სერვერი კვლავ იღებს მხოლოდ ჩაშენებულ პროვაიდერებს და იდენტობებს შესაბამისი trust policy-ით. არ ჩადოთ იდენტობის ტოკენი TUIST_TOKEN-ში, რომელიც ელოდება Tuist სერთიფიკატს.

თუ გაცვლა ვერ მოხერხდა, შეამოწმეთ, რომ გამცემი, აუდიტორია და პოლიტიკის ყოველი claim ზუსტად ემთხვევა ტოკენს, რომ JWKS URL ემსახურება გასაღებს, რომლითაც ტოკენი არის ხელმოწერილი, რომ პოლიტიკა არ არის წაშლილი და რომ TUIST_OIDC_ACCOUNT ასახელებს ანგარიშს, რომელსაც ეკუთვნის პროექტი. იმის თავიდან ასაცილებლად, თუ რომელი იდენტობებია სანდო, Tuist აბრუნებს იგივე შეცდომას ყველა ამ შემთხვევისთვის.

Fly.io Machines#

Fly.io მხარს უჭერს OIDC სამუშაო დატვირთვის იდენტობას. Machine-ს შეუძლია მოითხოვოს მოკლევადიანი, ხელმოწერილი იდენტობის ტოკენი თავისი ლოკალური /.fly/api Unix socket-იდან, Fly API ტოკენის ან ხანგრძლივი Tuist საიდუმლოს გარეშე. Fly ტოკენები აიდენტიფიცირებენ ორგანიზაციას და აპლიკაციას, არა საწყის რეპოზიტორიას, ამიტომ გამოიყენეთ trust policy GitHub რეპოზიტორიის დაკავშირების ნაცვლად:

  1. მიიღეთ გამცემი (iss), ორგანიზაციის ID (org_id) და აპლიკაციის ID (app_id) თქვენს Fly Machine-ში გამოშვებული იდენტობის ტოკენიდან. გამცემია https://oidc.fly.io/<organization-slug>. გამოიყენეთ რიცხვითი ID-ები, არა ორგანიზაციის ან აპის სახელები.

  2. შექმენით trust policyFly.io Machines შაბლონის გამოყენებით და შეიყვანეთ ორგანიზაციის slug და ორივე რიცხვითი ID. ის ავსებს ქვემოთ მოცემულ მნიშვნელობებს და ინარჩუნებს ID-ებს სტრინგებად. ასევე შეგიძლიათ შეიყვანოთ ისინი ხელით Custom provider-ის გამოყენებით; შეინარჩუნეთ ბრჭყალები ID-ების გარშემო claims-ებში.

    ველიმნიშვნელობა
    გამცემის URLhttps://oidc.fly.io/<organization-slug>
    JWKS URLhttps://oidc.fly.io/<organization-slug>/.well-known/jwks
    აუდიტორიაtuist
    Claims{"org_id": "<organization-id>", "app_id": "<application-id>"}
  3. Machine-ის შიგნით, დააყენეთ TUIST_OIDC_ACCOUNT Tuist ანგარიშის handle-ზე, რომელსაც ეკუთვნის პროექტი (არა Fly ორგანიზაციის slug), მოითხოვეთ ტოკენი აუდიტორიით tuist და გადაეცით ის tuist auth login-ს TUIST_OIDC_TOKEN-ის გამოყენებით:

bash
set -euo pipefail
export TUIST_OIDC_ACCOUNT="my-tuist-account"
TUIST_OIDC_TOKEN="$(curl --fail --silent --show-error \
--unix-socket /.fly/api \
-X POST http://localhost/v1/tokens/oidc \
-H 'Content-Type: application/json' \
--data '{"aud":"tuist"}')"
export TUIST_OIDC_TOKEN
tuist auth login
unset TUIST_OIDC_TOKEN

საწყისი კონფიგურაციისთვის, შეგიძლიათ შეამოწმოთ მხოლოდ იდენტობის ველები ლოკალურად, ტოკენის ექსპორტირების შემდეგ და მისი გაუქმებამდე. ეს დეკოდირებს claims-ებს კონფიგურაციისთვის; Tuist ცალკე ამოწმებს ხელმოწერას ავტორიზაციის დროს:

bash
python3 - <<'PY'
import base64, json, os
payload = os.environ["TUIST_OIDC_TOKEN"].split(".")[1]
claims = json.loads(base64.urlsafe_b64decode(payload + "=" * (-len(payload) % 4)))
print(json.dumps({key: claims[key] for key in ("iss", "org_id", "app_id")}, indent=2))
PY

არ დაბეჭდოთ ან არ ჩააკომიტოთ თავად ტოკენი. ნებისმიერ Machine-ს ავტორიზებულ Fly აპში შეუძლია ავტორიზაცია Tuist ანგარიშის ყველა მიმდინარე და მომავალ პროექტზე. შექმენით ცალკე policy თითოეული დამატებითი აპისთვის. Fly იდენტობის ტოკენები იწურება დაახლოებით ათ წუთში, ამიტომ ხანგრძლივად მომუშავე Machine-ებზე მოითხოვეთ ახალი და გაუშვით tuist auth login ისევ ერთსაათიანი Tuist სესიის ამოწურვამდე.

OIDC ტოკენის სკოპები#

OIDC ტოკენებს ენიჭებათ ci სკოპების ჯგუფი. GitHub Actions-ის, CircleCI-ისა და Bitrise-ისთვის, ეს უზრუნველყოფს წვდომას რეპოზიტორიასთან დაკავშირებულ ყველა პროექტზე. სამუშაო დატვირთვის იდენტობის trust policies-ისთვის, ეს უზრუნველყოფს წვდომას შერჩეული ანგარიშის ყველა მიმდინარე და მომავალ პროექტზე, პროექტის შექმნის, პროექტის ადმინისტრირების, runner-ის ადმინისტრირების ან ანგარიშის წევრების ადმინისტრირების უფლების მინიჭების გარეშე. იხილეთ სკოპების ჯგუფები დეტალებისთვის, თუ რას მოიცავს ci სკოპი.

უსაფრთხოების უპირატესობები

OIDC ავტორიზაცია უფრო უსაფრთხოა ვიდრე ხანგრძლივი ტოკენები, რადგან:

  • არ არის საიდუმლოებები, რომლებიც უნდა განახლდეს ან იმართოს
  • ტოკენები მოკლევადიანია
  • ავტორიზაცია მიბმულია თქვენს რეპოზიტორიის იდენტობაზე ან ცალსახად ავტორიზებულ სამუშაო დატვირთვის იდენტობაზე

Gradle პლაგინის ავტორიზაცია#

Gradle პლაგინი იყენებს Tuist CLI ავტორიზაციის მდგომარეობას და არ განსაზღვრავს ცალკე შესვლის ნაკადს. გაიარეთ ავტორიზაცია ერთხელ CLI-ით და პლაგინი ხელახლა გამოიყენებს ამ მონაცემებს.

პროექტისა და სერვერის კონფიგურაციისთვის, project და url ჩათვლით, გამოიყენეთ კანონიკური tuist.toml მითითება.

ლოკალური გამოყენებისთვის, გაუშვით:

bash
tuist auth login

CI-სთვის, გამოიყენეთ ერთ-ერთი:

თვითმასპინძელი Tuist სერვერებისთვის, განსაზღვრეთ სერვერის URL tuist.toml-ში (მაგალითად url = "https://tuist.your-company.com") და გაუშვით სტანდარტული შესვლის ნაკადი. URL იხსნება იმავე კონფიგურაციის ფაილიდან, რომელსაც პლაგინი იყენებს.

ავტორიზაციის კონფიგურაციის შემდეგ, ჩვეულებრივად გაუშვით თქვენი Gradle ქეშირების ბრძანებები და ამოცანები.

ანგარიშის ტოკენები#

CI გარემოებისთვის, რომლებიც არ უჭერენ მხარს OIDC-ს, ან როცა გჭირდებათ ნებართვებზე ზუსტი კონტროლი, შეგიძლიათ გამოიყენოთ ანგარიშის ტოკენები. ანგარიშის ტოკენები საშუალებას გაძლევთ ზუსტად მიუთითოთ, თუ რომელ სკოპებსა და პროექტებზე აქვს ტოკენს წვდომა.

ანგარიშის ტოკენის შექმნა#

ანგარიშის ტოკენის შექმნის ყველაზე მარტივი გზა dashboard-იდან არის:

  1. გახსენით ორგანიზაცია Tuist dashboard-ში.
  2. გადადით Settings > Tokens-ზე.
  3. აირჩიეთ Generate token.
  4. აირჩიეთ სახელი, არასავალდებულო ვადა, პროექტზე წვდომა და სკოპები, რომლებიც ტოკენს სჭირდება.
  5. დააკოპირეთ გენერირებული ტოკენის მნიშვნელობა დიალოგის დახურვამდე. ტოკენის მნიშვნელობები ნაჩვენებია მხოლოდ ერთხელ.

ასევე შეგიძლიათ შექმნათ ანგარიშის ტოკენები CLI-დან, რაც სასარგებლოა სკრიპტინგის ან ავტომატიზაციისთვის:

bash
tuist account tokens create account-handle \
--scopes account:cache:write project:cache:read project:cache:write \
--name ci-cache-token \
--expires 1y
Important

ჩაანაცვლეთ account-handle იმ ანგარიშის handle-ით, რომელსაც ეკუთვნის პროექტები, რომლებზეც გსურთ ტოკენს ჰქონდეს წვდომა. ეს შეიძლება იყოს ორგანიზაციის ანგარიში, არა აუცილებლად თქვენი პირადი ანგარიში.

ბრძანება იღებს შემდეგ პარამეტრებს:

პარამეტრიაღწერა
--scopesსავალდებულო. სკოპების კომებით გამოყოფილი სია, რომლებიც ტოკენს უნდა მიენიჭოს.
--nameსავალდებულო. ტოკენის უნიკალური იდენტიფიკატორი (1-32 სიმბოლო, მხოლოდ ალფანუმერული, დეფისები და ქვედა ტირეები).
--expiresარასავალდებულო. როდის უნდა ამოიწუროს ტოკენი. გამოიყენეთ ფორმატი, როგორიცაა 30d (დღეები), 6m (თვეები), ან 1y (წლები). თუ არ არის მითითებული, ტოკენი არასდროს იწურება.
--projectsშეზღუდეთ ტოკენი კონკრეტული პროექტის handle-ებზე. ტოკენს აქვს წვდომა ყველა პროექტზე, თუ არ არის მითითებული.

ხელმისაწვდომი სკოპები#

სკოპიაღწერა
account:cache:readანგარიშის სკოპის ქეშირებული ბინარების ჩამოტვირთვა
account:cache:writeანგარიშის სკოპის ქეშირებული ბინარების ატვირთვა
account:members:readანგარიშის წევრების წაკითხვა
account:members:writeანგარიშის წევრების მართვა
account:registry:readSwift-ის პაკეტების რეესტრიდან წაკითხვა
account:registry:writeSwift-ის პაკეტების რეესტრში გამოქვეყნება
account:runners:readrunner-ის დავალებების, სამუშაო ნაკადების, პროფილების და ტომების წაკითხვა
account:runners:writerunner-ის პროფილების მართვა და runner-ის ტომების გასუფთავება
project:previews:readპრევიუების ჩამოტვირთვა
project:previews:writeპრევიუების ატვირთვა
project:admin:readპროექტების და მათი პარამეტრების წაკითხვა
project:admin:writeპროექტების შექმნა, განახლება და წაშლა. პროექტის შესაქმნელად საჭიროა ტოკენი, რომელსაც აქვს წვდომა ყველა პროექტზე
project:cache:readქეშირებული ბინარების ჩამოტვირთვა
project:cache:writeქეშირებული ბინარების ატვირთვა
project:bundles:readბანდლების ნახვა
project:bundles:writeბანდლების ატვირთვა
project:tests:readტესტის შედეგების წაკითხვა
project:tests:writeტესტის შედეგების ატვირთვა
project:builds:readაგების ანალიტიკის წაკითხვა
project:builds:writeაგების ანალიტიკის ატვირთვა
project:runs:readბრძანებების გაშვებების წაკითხვა
project:runs:writeბრძანებების გაშვებების შექმნა და განახლება

სკოპების ჯგუფები#

სკოპების ჯგუფები უზრუნველყოფს მოსახერხებელ გზას რამდენიმე დაკავშირებული სკოპის ერთი იდენტიფიკატორით მინიჭებისთვის. როდესაც იყენებთ სკოპების ჯგუფს, ის ავტომატურად ფართოვდება და მოიცავს ყველა ინდივიდუალურ სკოპს, რომელიც მასში შედის.

სკოპების ჯგუფიშემავალი სკოპები
ciaccount:cache:write, project:cache:write, project:previews:write, project:bundles:write, project:tests:write, project:builds:write, project:runs:write
mcpproject:cache:read, project:previews:read, project:bundles:read, project:tests:read, project:builds:read, project:runs:read

უწყვეტი ინტეგრაცია#

CI გარემოებისთვის, რომლებიც არ უჭერენ მხარს OIDC-ს, შექმენით ანგარიშის ტოკენი ci სკოპების ჯგუფით თქვენი CI სამუშაო ნაკადების ავთენტიფიკაციისთვის. დაფაზე აირჩიეთ CI პრესეტი ტოკენის გენერირებისას.

ასევე შეგიძლიათ შექმნათ იგივე ტოკენი CLI-დან:

bash
tuist account tokens create account-handle --scopes ci --name ci

ეს ქმნის ტოკენს ყველა იმ სკოპით, რაც საჭიროა ტიპური CI ოპერაციებისთვის (ქეში, პრევიუები, ბანდლები, ტესტები, აგებები და გაშვებები). შეინახეთ გენერირებული ტოკენი როგორც საიდუმლო თქვენს CI გარემოში და დააყენეთ ის როგორც TUIST_TOKEN გარემოს ცვლადი.

ანგარიშის ტოკენების მართვა#

გახსენით Settings > Tokens ანგარიშის დაფაზე, რათა ნახოთ ანგარიშის ტოკენები, შეამოწმოთ ტოკენის სკოპები და პროექტზე წვდომა, და გააუქმოთ ტოკენები როტაციის დროს.

ანგარიშის ყველა ტოკენის ჩამოსათვლელად:

bash
tuist account tokens list account-handle

ტოკენის სახელით გასაუქმებლად:

bash
tuist account tokens revoke account-handle ci-cache-token

ანგარიშის ტოკენების გამოყენება#

ანგარიშის ტოკენები მოსალოდნელია, რომ განისაზღვროს როგორც გარემოს ცვლადი TUIST_TOKEN:

bash
export TUIST_TOKEN=your-account-token
როდის გამოვიყენოთ ანგარიშის ტოკენები

გამოიყენეთ ანგარიშის ტოკენები, როდესაც გჭირდებათ:

  • ავთენტიფიკაცია CI გარემოებში, რომლებიც არ უჭერენ მხარს OIDC-ს
  • დაწვრილებითი კონტროლი იმაზე, თუ რომელ ოპერაციებს შეასრულებს ტოკენი
  • ტოკენი, რომელსაც შეუძლია წვდომა ანგარიშში არსებულ რამდენიმე პროექტზე
  • დროით შეზღუდული ტოკენები, რომლებიც ავტომატურად იწურება