{"id":36787,"date":"2025-12-23T03:00:35","date_gmt":"2025-12-23T00:00:35","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/"},"modified":"2025-12-23T03:00:35","modified_gmt":"2025-12-23T00:00:35","slug":"github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/","title":{"rendered":"GitHub Actions ve AWS Rol Zincirleme: G\u00fcvenlikte \u00c7\u0131\u011f\u0131r A\u00e7an Bir Y\u00fckseltme"},"content":{"rendered":"<h2>GitHub Actions ve AWS Rol Zincirleme: G\u00fcvenlikte \u00c7\u0131\u011f\u0131r A\u00e7an Bir Y\u00fckseltme<\/h2>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Teslimat) otomasyonu vazge\u00e7ilmez bir hale gelmi\u015ftir. Ancak bu otomasyonun getirdi\u011fi en b\u00fcy\u00fck zorluklardan biri, CI\/CD ara\u00e7lar\u0131n\u0131n bulut kaynaklar\u0131na g\u00fcvenli bir \u015fekilde eri\u015fimini sa\u011flamakt\u0131r. Geleneksel y\u00f6ntemler genellikle uzun \u00f6m\u00fcrl\u00fc kimlik bilgileri kullanmay\u0131 gerektirir ki bu da ciddi g\u00fcvenlik riskleri ta\u015f\u0131r. GitHub Actions ve AWS Rol Zincirleme (Role Chaining) yakla\u015f\u0131m\u0131, bu g\u00fcvenlik a\u00e7\u0131\u011f\u0131n\u0131 kapatarak, CI\/CD s\u00fcre\u00e7lerinizde bulut kaynaklar\u0131na eri\u015fimi daha g\u00fcvenli, y\u00f6netilebilir ve denetlenebilir hale getiren \u00e7\u0131\u011f\u0131r a\u00e7an bir y\u00fckseltme sunar.<\/p>\n<h3>Giri\u015f: CI\/CD G\u00fcvenli\u011finde Neden Yeni Bir Yakla\u015f\u0131m Gerekiyor?<\/h3>\n<h4>CI\/CD S\u00fcre\u00e7lerinin \u00d6nemi<\/h4>\n<p>CI\/CD, geli\u015ftirme ekiplerinin yaz\u0131l\u0131m\u0131 daha h\u0131zl\u0131, daha s\u0131k ve daha g\u00fcvenilir bir \u015fekilde da\u011f\u0131tmas\u0131n\u0131 sa\u011flayan temel bir DevOps prati\u011fidir. Otomatik testler, derlemeler ve da\u011f\u0131t\u0131mlar sayesinde insan hatas\u0131 minimize edilir ve \u00fcr\u00fcn pazara daha \u00e7abuk sunulur.<\/p>\n<h4>Kimlik Bilgisi Y\u00f6netimi Zorluklar\u0131<\/h4>\n<p>CI\/CD boru hatlar\u0131n\u0131n AWS gibi bulut sa\u011flay\u0131c\u0131lar\u0131ndaki kaynaklara (S3, EC2, Lambda, EKS vb.) eri\u015fmesi gerekti\u011finde, bu eri\u015fimi g\u00fcvenli bir \u015fekilde sa\u011flamak kritik bir meseledir. Geleneksel olarak bu, eri\u015fim anahtarlar\u0131 (Access Key ID ve Secret Access Key) kullan\u0131larak yap\u0131l\u0131rd\u0131.<\/p>\n<h4>Geleneksel Y\u00f6ntemlerin Riskleri<\/h4>\n<p>Eri\u015fim anahtarlar\u0131, bir kullan\u0131c\u0131 veya rol ad\u0131na AWS kaynaklar\u0131na programatik eri\u015fim sa\u011flayan uzun \u00f6m\u00fcrl\u00fc kimlik bilgileridir. Bunlar\u0131n do\u011frudan GitHub Actions gibi CI\/CD ortamlar\u0131nda saklanmas\u0131 veya ortam de\u011fi\u015fkenleri olarak kullan\u0131lmas\u0131, s\u0131z\u0131nt\u0131, yetkisiz eri\u015fim veya k\u00f6t\u00fcye kullan\u0131m riskini art\u0131r\u0131r. Bir kez ele ge\u00e7irildi\u011finde, bu anahtarlar s\u0131n\u0131rs\u0131z bir s\u00fcre boyunca kullan\u0131labilir ve geni\u015f yetkilere sahip olabilir.<\/p>\n<h3>Geleneksel Yakla\u015f\u0131mlar\u0131n G\u00fcvenlik A\u00e7\u0131klar\u0131<\/h3>\n<p>CI\/CD ortamlar\u0131nda uzun \u00f6m\u00fcrl\u00fc kimlik bilgilerini kullanmak, potansiyel g\u00fcvenlik felaketlerine davetiye \u00e7\u0131kar\u0131r. Bu b\u00f6l\u00fcmde, geleneksel yakla\u015f\u0131mlar\u0131n neden yetersiz kald\u0131\u011f\u0131n\u0131 ve ne t\u00fcr riskler ta\u015f\u0131d\u0131\u011f\u0131n\u0131 inceleyece\u011fiz.<\/p>\n<h4>Uzun \u00d6m\u00fcrl\u00fc Eri\u015fim Anahtarlar\u0131n\u0131n Tehlikeleri<\/h4>\n<p>Uzun \u00f6m\u00fcrl\u00fc eri\u015fim anahtarlar\u0131 (Access Key ID ve Secret Access Key), genellikle AWS IAM kullan\u0131c\u0131lar\u0131na veya rollere atan\u0131r. Bu anahtarlar\u0131n bir kez olu\u015fturuldu\u011funda s\u00fcresi dolmaz (manuel olarak iptal edilmedik\u00e7e). E\u011fer bu anahtarlar bir kod deposuna yanl\u0131\u015fl\u0131kla commit edilir, bir log dosyas\u0131nda g\u00f6r\u00fcn\u00fcr veya bir CI\/CD arac\u0131 taraf\u0131ndan g\u00fcvenli olmayan bir \u015fekilde saklan\u0131rsa, k\u00f6t\u00fc niyetli ki\u015filer taraf\u0131ndan ele ge\u00e7irilme riski \u00e7ok y\u00fcksektir. Ele ge\u00e7irilen anahtarlar, atanm\u0131\u015f olduklar\u0131 yetkilerle AWS kaynaklar\u0131na s\u0131n\u0131rs\u0131z eri\u015fim sa\u011flayabilir.<\/p>\n<h4>Ortak Hesap Kullan\u0131m\u0131n\u0131n Riskleri<\/h4>\n<p>Baz\u0131 durumlarda, t\u00fcm CI\/CD s\u00fcre\u00e7leri i\u00e7in tek bir AWS IAM kullan\u0131c\u0131s\u0131 ve onun anahtarlar\u0131 kullan\u0131l\u0131r. Bu durum, &#8220;shared secret&#8221; (payla\u015f\u0131lan s\u0131r) olarak bilinen bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 yarat\u0131r. Hangi CI\/CD i\u015f ak\u0131\u015f\u0131n\u0131n hangi i\u015flemi yapt\u0131\u011f\u0131n\u0131 izlemek zorla\u015f\u0131r ve bir g\u00fcvenlik ihlali durumunda etki alan\u0131 geni\u015fler. Ayr\u0131ca, bir ekip \u00fcyesi ayr\u0131ld\u0131\u011f\u0131nda veya yetkileri de\u011fi\u015fti\u011finde anahtarlar\u0131n y\u00f6netimi karma\u015f\u0131kla\u015f\u0131r.<\/p>\n<h4>Gizemli Eri\u015fim Anahtarlar\u0131n\u0131n Y\u00f6netimi<\/h4>\n<p>Eri\u015fim anahtarlar\u0131n\u0131 g\u00fcvenli bir \u015fekilde y\u00f6netmek i\u00e7in \u00e7e\u015fitli s\u0131r y\u00f6netimi (secret management) ara\u00e7lar\u0131 (AWS Secrets Manager, HashiCorp Vault, GitHub Secrets vb.) kullan\u0131lsa da, bu ara\u00e7lar sadece anahtarlar\u0131n nerede sakland\u0131\u011f\u0131n\u0131 g\u00fcvence alt\u0131na al\u0131r. Anahtarlar\u0131n CI\/CD ortam\u0131na aktar\u0131lmas\u0131 ve kullan\u0131lmas\u0131 s\u0131ras\u0131nda yine de riskler mevcuttur. Ayr\u0131ca, bu anahtarlar\u0131n rotasyonu ve ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimi de ek operasyonel y\u00fck getirir.<\/p>\n<h3>AWS Rol Zincirleme (Role Chaining) Nedir ve Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p>AWS Rol Zincirleme, uzun \u00f6m\u00fcrl\u00fc kimlik bilgileri kullanma ihtiyac\u0131n\u0131 ortadan kald\u0131rarak, ge\u00e7ici ve s\u0131n\u0131rl\u0131 yetkilere sahip kimlik bilgileriyle AWS kaynaklar\u0131na eri\u015fimi sa\u011flayan g\u00fc\u00e7l\u00fc bir mekanizmad\u0131r.<\/p>\n<h4>IAM Rolleri ve G\u00fcven Politikalar\u0131<\/h4>\n<p>AWS IAM (Identity and Access Management) rolleri, belirli yetkilere sahip sanal kimliklerdir. Bir rol, do\u011frudan bir kullan\u0131c\u0131ya veya cihaza atanmak yerine, belirli bir varl\u0131k (bir EC2 \u00f6rne\u011fi, bir Lambda fonksiyonu veya ba\u015fka bir AWS hesab\u0131) taraf\u0131ndan \u00fcstlenilebilir (assume). Her rol\u00fcn bir <strong>G\u00fcven Politikas\u0131 (Trust Policy)<\/strong> vard\u0131r. Bu politika, kimlerin veya hangi hizmetlerin bu rol\u00fc \u00fcstlenmesine izin verildi\u011fini tan\u0131mlar.<\/p>\n<h4>Ge\u00e7ici Kimlik Bilgileri ve Rol \u00dcstlenme (AssumeRole)<\/h4>\n<p>Bir varl\u0131k bir rol\u00fc \u00fcstlendi\u011finde, AWS Security Token Service (STS) taraf\u0131ndan kendisine ge\u00e7ici kimlik bilgileri (ge\u00e7ici eri\u015fim anahtar\u0131, gizli anahtar ve oturum token\u0131) verilir. Bu kimlik bilgileri, belirli bir s\u00fcre sonra (genellikle 15 dakika ile 12 saat aras\u0131) otomatik olarak sona erer. Bu, kimlik bilgilerinin ele ge\u00e7irilse bile s\u0131n\u0131rl\u0131 bir kullan\u0131m s\u00fcresi oldu\u011fu anlam\u0131na gelir, bu da g\u00fcvenlik riskini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r.<\/p>\n<h4>Zincirleme Mekanizmas\u0131<\/h4>\n<p>Rol zincirleme, bir rol\u00fcn \u00fcstlenilmesiyle elde edilen ge\u00e7ici kimlik bilgilerinin, ba\u015fka bir rol\u00fc \u00fcstlenmek i\u00e7in kullan\u0131lmas\u0131d\u0131r. \u00d6rne\u011fin, bir GitHub Actions i\u015f ak\u0131\u015f\u0131, ilk olarak belirli bir &#8220;ge\u00e7i\u015f&#8221; rol\u00fcn\u00fc \u00fcstlenir. Bu ge\u00e7i\u015f rol\u00fcn\u00fcn yetkileri, sadece ba\u015fka bir &#8220;hedef&#8221; rol\u00fc \u00fcstlenmeye izin verir. Hedef rol ise, ger\u00e7ek AWS kaynaklar\u0131na (S3&#8217;e yazma, Lambda&#8217;y\u0131 \u00e7a\u011f\u0131rma vb.) eri\u015fim yetkilerine sahiptir. Bu sayede, ilk rol sadece bir k\u00f6pr\u00fc g\u00f6revi g\u00f6r\u00fcr ve do\u011frudan kaynaklara eri\u015fim yetkisi olmaz. Bu katmanl\u0131 yakla\u015f\u0131m, yetkilendirmeyi daha gran\u00fcler hale getirir ve g\u00fcvenlik duru\u015funu g\u00fc\u00e7lendirir.<\/p>\n<h3>GitHub Actions ile G\u00fcvenli Kimlik Do\u011frulama: OIDC&#8217;nin G\u00fcc\u00fc<\/h3>\n<p>GitHub Actions, OpenID Connect (OIDC) entegrasyonu sayesinde, AWS&#8217;ye do\u011frudan uzun \u00f6m\u00fcrl\u00fc kimlik bilgileri sa\u011flamadan g\u00fcvenli bir \u015fekilde kimlik do\u011frulamas\u0131 yapabilir.<\/p>\n<h4>OIDC Nedir ve Nas\u0131l \u0130\u015fler?<\/h4>\n<p>OpenID Connect (OIDC), OAuth 2.0 protokol\u00fcn\u00fcn \u00fczerine in\u015fa edilmi\u015f bir kimlik do\u011frulama katman\u0131d\u0131r. Kullan\u0131c\u0131lar\u0131n kimliklerini g\u00fcvenli bir \u015fekilde do\u011frulamak ve bu bilgileri hizmetler aras\u0131nda payla\u015fmak i\u00e7in kullan\u0131l\u0131r. GitHub Actions ba\u011flam\u0131nda, GitHub, i\u015f ak\u0131\u015f\u0131 \u00e7al\u0131\u015ft\u0131\u011f\u0131nda bir OIDC token\u0131 \u00fcretir. Bu token, i\u015f ak\u0131\u015f\u0131n\u0131n kimli\u011fini ve belirli \u00f6zelliklerini (depo ad\u0131, dal ad\u0131, tetikleyici olay vb.) kriptografik olarak imzalanm\u0131\u015f bir \u015fekilde i\u00e7erir.<\/p>\n<h4>GitHub Actions OIDC Sa\u011flay\u0131c\u0131s\u0131<\/h4>\n<p>AWS IAM, harici OIDC sa\u011flay\u0131c\u0131lar\u0131yla g\u00fcven ili\u015fkisi kurabilir. GitHub Actions, bu ba\u011flamda bir OIDC sa\u011flay\u0131c\u0131s\u0131 olarak hareket eder. AWS&#8217;de bir OIDC sa\u011flay\u0131c\u0131s\u0131 tan\u0131mlad\u0131\u011f\u0131n\u0131zda, AWS, GitHub taraf\u0131ndan verilen OIDC tokenlar\u0131n\u0131n ge\u00e7erlili\u011fini do\u011frulayabilir ve bu tokenlarda yer alan iddialara (claims) g\u00f6re g\u00fcven ili\u015fkisi kurabilir.<\/p>\n<h4>G\u00fcven \u0130li\u015fkisi Kurma<\/h4>\n<p>AWS IAM&#8217;de bir rol olu\u015ftururken veya mevcut bir rol\u00fc d\u00fczenlerken, rol\u00fcn g\u00fcven politikas\u0131na GitHub Actions OIDC sa\u011flay\u0131c\u0131s\u0131n\u0131 ekleyebilirsiniz. Bu politika, hangi ko\u015fullar alt\u0131nda (\u00f6rne\u011fin, belirli bir GitHub deposundan gelen tokenlar) GitHub Actions&#8217;\u0131n bu rol\u00fc \u00fcstlenmesine izin verildi\u011fini belirtir. Bu sayede, sadece yetkili GitHub Actions i\u015f ak\u0131\u015flar\u0131 AWS&#8217;deki belirli rolleri \u00fcstlenebilir ve ge\u00e7ici kimlik bilgileri elde edebilir.<\/p>\n<h3>GitHub Actions ve AWS Rol Zincirleme Entegrasyonu: Ad\u0131m Ad\u0131m Rehber<\/h3>\n<p>\u015eimdi bu iki g\u00fc\u00e7l\u00fc teknolojiyi bir araya getirerek g\u00fcvenli bir CI\/CD boru hatt\u0131 olu\u015fturman\u0131n pratik ad\u0131mlar\u0131na ge\u00e7elim.<\/p>\n<h4>AWS&#8217;de OIDC Sa\u011flay\u0131c\u0131s\u0131 Olu\u015fturma<\/h4>\n<p>\u0130lk ad\u0131m, AWS IAM&#8217;de GitHub Actions i\u00e7in bir OIDC sa\u011flay\u0131c\u0131s\u0131 olu\u015fturmakt\u0131r. Bu, AWS&#8217;nin GitHub&#8217;dan gelen OIDC tokenlar\u0131n\u0131 do\u011frulamas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-hcl\">resource \"aws_iam_openid_connect_provider\" \"github_actions\" {\n  url             = \"https:\/\/token.actions.githubusercontent.com\"\n  client_id_list  = [\"sts.amazonaws.com\"]\n  thumbprint_list = [\"6938fd4d98bab03faadb97b34396831e3780fa86\"] # GitHub'\u0131n g\u00fcncel thumbprint'i\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sa\u011flay\u0131c\u0131, GitHub'\u0131n token URL'sini ve AWS STS i\u00e7in istemci kimli\u011fini belirtir.<\/p>\n<h4>Hedef Rol\u00fcn Yap\u0131land\u0131r\u0131lmas\u0131 (AssumeRole)<\/h4>\n<p>Ard\u0131ndan, GitHub Actions'\u0131n \u00fcstlenece\u011fi AWS IAM rol\u00fcn\u00fc olu\u015fturman\u0131z gerekir. Bu rol, CI\/CD i\u015f ak\u0131\u015f\u0131n\u0131z\u0131n AWS kaynaklar\u0131 \u00fczerinde ger\u00e7ekle\u015ftirmesi gereken minimum yetkilere sahip olmal\u0131d\u0131r (minimum yetki prensibi).<\/p>\n<pre><code class=\"language-json\"># policies\/github_actions_deploy_policy.json\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"s3:PutObject\",\n        \"s3:GetObject\",\n        \"lambda:UpdateFunctionCode\",\n        \"ecr:GetAuthorizationToken\",\n        \"ecr:BatchCheckLayerAvailability\",\n        \"ecr:InitiateLayerUpload\",\n        \"ecr:UploadLayerPart\",\n        \"ecr:CompleteLayerUpload\",\n        \"ecr:PutImage\"\n      ],\n      \"Resource\": \"*\" # Kaynaklar\u0131 spesifik hale getirin!\n    }\n  ]\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu politika, bir S3 kovas\u0131na dosya y\u00fckleme, Lambda fonksiyonu g\u00fcncelleme ve ECR'ye Docker imaj\u0131 g\u00f6nderme yetkilerini verir. <strong>Resource<\/strong> alan\u0131n\u0131 her zaman spesifik hale getirmeye \u00f6zen g\u00f6sterin.<\/p>\n<p>\u015eimdi bu rol i\u00e7in g\u00fcven politikas\u0131n\u0131 tan\u0131mlayal\u0131m:<\/p>\n<pre><code class=\"language-json\"># roles\/github_actions_deploy_role_trust_policy.json\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"Federated\": \"arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider\/token.actions.githubusercontent.com\"\n      },\n      \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n      \"Condition\": {\n        \"StringEquals\": {\n          \"token.actions.githubusercontent.com:aud\": \"sts.amazonaws.com\",\n          \"token.actions.githubusercontent.com:sub\": \"repo:YOUR_GITHUB_ORG\/YOUR_REPO_NAME:ref:refs\/heads\/main\"\n        }\n      }\n    }\n  ]\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu g\u00fcven politikas\u0131, sadece belirli bir GitHub deposunun <code>main<\/code> dal\u0131ndan gelen OIDC tokenlar\u0131n\u0131n bu rol\u00fc \u00fcstlenmesine izin verir. <code>YOUR_AWS_ACCOUNT_ID<\/code>, <code>YOUR_GITHUB_ORG<\/code> ve <code>YOUR_REPO_NAME<\/code> de\u011ferlerini kendi bilgilerinizle de\u011fi\u015ftirmeyi unutmay\u0131n.<\/p>\n<pre><code class=\"language-hcl\">resource \"aws_iam_role\" \"github_actions_deploy_role\" {\n  name               = \"github-actions-deploy-role\"\n  assume_role_policy = file(\"roles\/github_actions_deploy_role_trust_policy.json\")\n}\n\nresource \"aws_iam_role_policy_attachment\" \"github_actions_deploy_policy_attachment\" {\n  role       = aws_iam_role.github_actions_deploy_role.name\n  policy_arn = aws_iam_policy.github_actions_deploy_policy.arn\n}\n<\/pre>\n<p><\/code><\/p>\n<h4>GitHub Actions \u0130\u015f Ak\u0131\u015f\u0131n\u0131 Olu\u015fturma<\/h4>\n<p>Son olarak, GitHub Actions i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 bu rol\u00fc \u00fcstlenecek \u015fekilde yap\u0131land\u0131rman\u0131z gerekir.<\/p>\n<pre><code class=\"language-yaml\">name: AWS Deploy via Role Chaining\n\non:\n  push:\n    branches:\n      - main\n\npermissions:\n  id-token: write # Bu, OIDC token\u0131 olu\u015fturmak i\u00e7in gereklidir\n  contents: read # Depo i\u00e7eri\u011fini okumak i\u00e7in\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout code\n        uses: actions\/checkout@v4\n\n      - name: Configure AWS credentials\n        uses: aws-actions\/configure-aws-credentials@v4\n        with:\n          role-to-assume: arn:aws:iam::YOUR_AWS_ACCOUNT_ID:role\/github-actions-deploy-role\n          aws-region: us-east-1 # Kendi b\u00f6lgenizi belirtin\n\n      - name: Deploy to S3\n        run: |\n          aws s3 cp .\/build\/index.html s3:\/\/your-s3-bucket-name\/index.html\n\n      - name: Update Lambda Function\n        run: |\n          aws lambda update-function-code --function-name MyLambdaFunction --zip-file fileb:\/\/function.zip\n<\/pre>\n<p><\/code><\/p>\n<p><code>aws-actions\/configure-aws-credentials<\/code> eylemi, GitHub Actions taraf\u0131ndan \u00fcretilen OIDC token\u0131n\u0131 kullanarak belirtilen AWS rol\u00fcn\u00fc \u00fcstlenir ve ge\u00e7ici kimlik bilgilerini ortam de\u011fi\u015fkenleri olarak ayarlar. Bu sayede, sonraki AWS CLI veya SDK komutlar\u0131 bu ge\u00e7ici kimlik bilgilerini otomatik olarak kullan\u0131r.<\/p>\n<h3>Avantajlar ve En \u0130yi Uygulamalar<\/h3>\n<p>Bu yakla\u015f\u0131m\u0131n sundu\u011fu g\u00fcvenlik ve y\u00f6netim avantajlar\u0131 olduk\u00e7a fazlad\u0131r.<\/p>\n<h4>G\u00fcvenlik Duru\u015funun \u0130yile\u015ftirilmesi<\/h4>\n<ul>\n<li><strong>Uzun \u00d6m\u00fcrl\u00fc Anahtar Yok:<\/strong> CI\/CD ortam\u0131nda kal\u0131c\u0131 eri\u015fim anahtar\u0131 saklama ihtiyac\u0131 ortadan kalkar. Bu, anahtar s\u0131z\u0131nt\u0131s\u0131 riskini k\u00f6kten \u00e7\u00f6zer.<\/li>\n<li><strong>Ge\u00e7ici Kimlik Bilgileri:<\/strong> Elde edilen kimlik bilgileri k\u0131sa \u00f6m\u00fcrl\u00fcd\u00fcr. Bir ihlal durumunda bile, yetkisiz eri\u015fim s\u00fcresi k\u0131s\u0131tl\u0131 olacakt\u0131r.<\/li>\n<li><strong>Minimum Yetki Prensibi:<\/strong> Her rol, sadece ihtiya\u00e7 duydu\u011fu yetkilere sahip olacak \u015fekilde yap\u0131land\u0131r\u0131l\u0131r. Bu, potansiyel hasar\u0131 s\u0131n\u0131rlar.<\/li>\n<li><strong>Gran\u00fcler Yetkilendirme:<\/strong> GitHub deposu, dal\u0131 veya hatta belirli bir i\u015f ak\u0131\u015f\u0131 baz\u0131nda yetkilendirme yap\u0131labilir.<\/li>\n<\/ul>\n<h4>Y\u00f6netim Y\u00fck\u00fcn\u00fcn Azalmas\u0131<\/h4>\n<p>Eri\u015fim anahtarlar\u0131n\u0131n rotasyonu, depolanmas\u0131 ve ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimi gibi operasyonel y\u00fckler ortadan kalkar. Her \u015fey AWS IAM ve GitHub Actions entegrasyonu \u00fczerinden otomatik olarak halledilir.<\/p>\n<h4>Denetlenebilirlik ve \u0130zlenebilirlik<\/h4>\n<p>AWS CloudTrail, hangi GitHub Actions i\u015f ak\u0131\u015f\u0131n\u0131n hangi rol\u00fc \u00fcstlendi\u011fini ve hangi AWS kaynaklar\u0131na eri\u015fti\u011fini net bir \u015fekilde g\u00f6sterir. Bu, g\u00fcvenlik denetimleri ve sorun giderme i\u00e7in paha bi\u00e7ilmez bir izlenebilirlik sa\u011flar.<\/p>\n<h4>En \u0130yi Uygulamalar<\/h4>\n<ul>\n<li><strong>Minimum Yetki:<\/strong> Her rol i\u00e7in sadece gerekli olan en az yetkiyi verin.<\/li>\n<li><strong>Kaynak K\u0131s\u0131tlamas\u0131:<\/strong> IAM politikalar\u0131nda <code>Resource: \"*\"<\/code> kullanmaktan ka\u00e7\u0131n\u0131n. M\u00fcmk\u00fcn oldu\u011funca spesifik kaynaklar\u0131 hedefleyin.<\/li>\n<li><strong>Ko\u015fullu Politikalar:<\/strong> G\u00fcven politikalar\u0131nda <code>Condition<\/code> bloklar\u0131n\u0131 kullanarak GitHub deposu, dal\u0131 veya ortam gibi k\u0131s\u0131tlamalar ekleyin.<\/li>\n<li><strong>Ortam Ayr\u0131m\u0131:<\/strong> Geli\u015ftirme, test ve \u00fcretim ortamlar\u0131 i\u00e7in farkl\u0131 AWS hesaplar\u0131 veya en az\u0131ndan farkl\u0131 IAM rolleri kullan\u0131n.<\/li>\n<li><strong>Periyodik \u0130nceleme:<\/strong> IAM rollerini ve politikalar\u0131n\u0131 d\u00fczenli olarak g\u00f6zden ge\u00e7irin ve g\u00fcncelleyin.<\/li>\n<\/ul>\n<h3>Sonu\u00e7 ve Gelecek Perspektifleri<\/h3>\n<p>GitHub Actions ve AWS Rol Zincirleme entegrasyonu, modern CI\/CD g\u00fcvenli\u011fi i\u00e7in alt\u0131n standart haline gelmektedir. Bu yakla\u015f\u0131m, uzun \u00f6m\u00fcrl\u00fc kimlik bilgilerinin getirdi\u011fi riskleri ortadan kald\u0131r\u0131rken, geli\u015ftirme s\u00fcre\u00e7lerinin h\u0131z\u0131n\u0131 ve verimlili\u011fini korur. Ge\u00e7ici, s\u0131n\u0131rl\u0131 yetkilere sahip ve otomatik olarak y\u00f6netilen kimlik bilgileri sayesinde, g\u00fcvenlik duru\u015funuzu \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirebilir ve denetlenebilirli\u011fi art\u0131rabilirsiniz. Bu y\u00fckseltme, sadece bir g\u00fcvenlik \u00f6zelli\u011fi olman\u0131n \u00f6tesinde, DevOps k\u00fclt\u00fcr\u00fcn\u00fcz\u00fcn olgunlu\u011funu art\u0131ran ve gelecekteki bulut tabanl\u0131 otomasyonlar i\u00e7in sa\u011flam bir temel olu\u015fturan stratejik bir yat\u0131r\u0131md\u0131r. G\u00fcvenli\u011finizi \u015fansa b\u0131rakmay\u0131n, bu \u00e7\u0131\u011f\u0131r a\u00e7an entegrasyonu CI\/CD boru hatlar\u0131n\u0131za dahil edin.<\/p>\n<h3>SSS (S\u0131k Sorulan Sorular)<\/h3>\n<dl>\n<dt>Rol zincirleme neden do\u011frudan OIDC kullanmaktan daha g\u00fcvenli?<\/dt>\n<dd>OIDC, GitHub Actions'\u0131n bir rol\u00fc \u00fcstlenmesine izin verirken, rol zincirleme bu rol\u00fcn yetkilerini daha da k\u0131s\u0131tlaman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, ilk rol sadece belirli bir hedef rol\u00fc \u00fcstlenmeye yetkili olabilir, ba\u015fka hi\u00e7bir AWS kayna\u011f\u0131na do\u011frudan eri\u015fimi olmaz. Bu, yetki ayr\u0131m\u0131 (separation of concerns) ilkesini g\u00fc\u00e7lendirir ve potansiyel bir ihlalin etkisini s\u0131n\u0131rlar.<\/dd>\n<dt>Bu yakla\u015f\u0131m her AWS hizmeti i\u00e7in ge\u00e7erli mi?<\/dt>\n<dd>Evet, AWS IAM rolleri ve STS AssumeRole mekanizmas\u0131, AWS'nin t\u00fcm hizmetleriyle entegre \u00e7al\u0131\u015f\u0131r. Rol\u00fc \u00fcstlendikten sonra elde etti\u011finiz ge\u00e7ici kimlik bilgileri, di\u011fer AWS hizmetlerine eri\u015fmek i\u00e7in kullan\u0131labilir.<\/dd>\n<dt>Zincirleme performans\u0131 etkiler mi?<\/dt>\n<dd>Rol \u00fcstlenme i\u015flemi \u00e7ok h\u0131zl\u0131d\u0131r ve genellikle milisaniyeler i\u00e7inde tamamlan\u0131r. CI\/CD i\u015f ak\u0131\u015f\u0131n\u0131z\u0131n genel s\u00fcresine ihmal edilebilir bir etki yapar.<\/dd>\n<dt>Farkl\u0131 ortamlarda (dev, test, prod) nas\u0131l y\u00f6netmeliyim?<\/dt>\n<dd>Her ortam i\u00e7in ayr\u0131 AWS hesaplar\u0131 kullanmak en iyi uygulamad\u0131r. E\u011fer bu m\u00fcmk\u00fcn de\u011filse, her ortam i\u00e7in ayr\u0131 IAM rolleri ve bu rollere atanm\u0131\u015f farkl\u0131 g\u00fcven politikalar\u0131 olu\u015fturmal\u0131s\u0131n\u0131z. \u00d6rne\u011fin, <code>dev-deploy-role<\/code> ve <code>prod-deploy-role<\/code> gibi roller tan\u0131mlayarak, GitHub Actions i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131n hangi ortama da\u011f\u0131t\u0131m yapabilece\u011fini gran\u00fcler bir \u015fekilde kontrol edebilirsiniz.<\/dd>\n<\/dl>\n","protected":false},"excerpt":{"rendered":"CI\/CD, geli\u015ftirme ekiplerinin yaz\u0131l\u0131m\u0131 daha h\u0131zl\u0131, daha s\u0131k ve daha g\u00fcvenilir bir \u015fekilde da\u011f\u0131tmas\u0131n\u0131 sa\u011flayan temel bir DevOps prati\u011fidir. Ot&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1406],"tags":[],"class_list":{"0":"post-36787","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-aws","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>GitHub Actions ve AWS Rol Zincirleme: G\u00fcvenlikte \u00c7\u0131\u011f\u0131r A\u00e7an Bir Y\u00fckseltme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GitHub Actions ve AWS Rol Zincirleme: G\u00fcvenlikte \u00c7\u0131\u011f\u0131r A\u00e7an Bir Y\u00fckseltme\" \/>\n<meta property=\"og:description\" content=\"CI\/CD, geli\u015ftirme ekiplerinin yaz\u0131l\u0131m\u0131 daha h\u0131zl\u0131, daha s\u0131k ve daha g\u00fcvenilir bir \u015fekilde da\u011f\u0131tmas\u0131n\u0131 sa\u011flayan temel bir DevOps prati\u011fidir. Ot...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-23T00:00:35+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"GitHub Actions ve AWS Rol Zincirleme: G\u00fcvenlikte \u00c7\u0131\u011f\u0131r A\u00e7an Bir Y\u00fckseltme\",\"datePublished\":\"2025-12-23T00:00:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/\"},\"wordCount\":2267,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"AWS\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/\",\"name\":\"GitHub Actions ve AWS Rol Zincirleme: G\u00fcvenlikte \u00c7\u0131\u011f\u0131r A\u00e7an Bir Y\u00fckseltme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-23T00:00:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GitHub Actions ve AWS Rol Zincirleme: G\u00fcvenlikte \u00c7\u0131\u011f\u0131r A\u00e7an Bir Y\u00fckseltme\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"GitHub Actions ve AWS Rol Zincirleme: G\u00fcvenlikte \u00c7\u0131\u011f\u0131r A\u00e7an Bir Y\u00fckseltme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/","og_locale":"tr_TR","og_type":"article","og_title":"GitHub Actions ve AWS Rol Zincirleme: G\u00fcvenlikte \u00c7\u0131\u011f\u0131r A\u00e7an Bir Y\u00fckseltme","og_description":"CI\/CD, geli\u015ftirme ekiplerinin yaz\u0131l\u0131m\u0131 daha h\u0131zl\u0131, daha s\u0131k ve daha g\u00fcvenilir bir \u015fekilde da\u011f\u0131tmas\u0131n\u0131 sa\u011flayan temel bir DevOps prati\u011fidir. Ot...","og_url":"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-23T00:00:35+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"GitHub Actions ve AWS Rol Zincirleme: G\u00fcvenlikte \u00c7\u0131\u011f\u0131r A\u00e7an Bir Y\u00fckseltme","datePublished":"2025-12-23T00:00:35+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/"},"wordCount":2267,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["AWS"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/","url":"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/","name":"GitHub Actions ve AWS Rol Zincirleme: G\u00fcvenlikte \u00c7\u0131\u011f\u0131r A\u00e7an Bir Y\u00fckseltme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-23T00:00:35+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/github-actions-ve-aws-rol-zincirleme-guvenlikte-cigir-acan-bir-yukseltme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"GitHub Actions ve AWS Rol Zincirleme: G\u00fcvenlikte \u00c7\u0131\u011f\u0131r A\u00e7an Bir Y\u00fckseltme"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=36787"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36787\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}