구글 안티그래비티 완전 분석 — 모델·요금제·CLI 총정리

🚀 구글 안티그래비티(Antigravity) 완전 분석 구글이 2025년 11월 Gemini 3와 함께 공개한 에이전트 퍼스트(agent-first) IDE 안티그래비티는 Claude·GPT·Gemini를 한 도구에서 골라 쓰는 멀티모델 코딩 환경이다. 이 글에서는 ① 지원 모델과 요금제별 사용량의 실체, ② 실사용자 평가, ③ 구글의 방향성, ④ Claude Code와의 비교·연계, ⑤ CLI( agy )로 직접 쓰는 법까지 다섯 갈래를 차례로 정리한다. 자료 간 충돌이 있는 지점은 한쪽으로 단정하지 않고 양쪽을 모두 살려 표기했다. 📅 기준 시점: 2026년 6월 · 프리뷰 단계 정보로 수치는 변동 가능 1. 안티그래비티란 무엇인가 — 기초 정리 안티그래비티는 2025년 7월 구글이 24억 달러 규모 라이선스 계약 으로 영입한 전 Windsurf 팀이 설계를 주도했다. VSCode를 포크한 위에 자율 에이전트 오케스트레이션 계층을 얹은 구조다. 2026년 5월 Google I/O에서 발표된 안티그래비티 2.0 은 데스크탑 앱과 함께 공식 CLI agy 를 처음 공개하며 기존 Gemini CLI의 공식 후계자 자리를 확정했다. 핵심 정체성은 단순 코드 자동완성이 아니라 병렬 에이전트 오케스트레이션 이다. 여러 에이전트가 동시에 — 하나는 API, 하나는 테스트, 또 하나는 프론트엔드 — 작업을 나눠 진행하고, 각 에이전트는 계획·테스트 결과·스크린샷·영상을 담은 Artifact 를 남긴다. "사람이 한 줄씩 승인"하는 방식이 아니라 "에이전트들이 일을 마치고 사람이 사후 검수"하는 모델이다. flowchart TD A([사용자 작업 지시]) --> B[에이전트 A API 구현] A --> C[에이전트 B 테스트 작성] A --> D[에이전트 C UI 생성] B --> E[Artifact 계획·결과·영상] C --> E D --> E...

OAuth 2.0의 개념과 동작 원리 완벽 가이드

🔐 OAuth란 무엇인가? 현대 웹 보안의 핵심 프로토콜 완벽 이해하기

웹 보안 · 인가 프로토콜 · OAuth 2.0 · OIDC · 소셜 로그인

웹사이트나 모바일 앱을 이용하다 보면 "Google 계정으로 로그인" 또는 "Facebook으로 시작하기"와 같은 버튼을 자주 마주합니다. 별도의 회원가입 없이 기존 계정으로 새로운 서비스에 안전하게 접속할 수 있게 해주는 기술, 그 중심에 바로 OAuth(Open Authorization)가 있습니다.

많은 사람들이 OAuth를 단순한 '로그인 수단'으로 오해하지만, 정확히 말하면 OAuth는 인가(Authorization)를 위한 개방형 표준 프로토콜입니다. 특정 애플리케이션이 사용자의 비밀번호를 직접 알지 못하더라도, 사용자의 권한을 위임받아 프로필 사진, 이메일, 일정 등 데이터에 접근할 수 있게 해주는 보안 체계입니다.

💡 핵심 포인트

OAuth는 비밀번호를 공유하지 않고도 제3자 앱에 데이터 접근 권한을 안전하게 위임하는 프로토콜입니다. 2026년 현재 OAuth 2.1 초안이 진행 중이며, 보안이 한층 강화되고 있습니다.

📌 1. OAuth의 탄생 배경: 왜 필요한가?

OAuth가 등장하기 전에는 한 서비스가 다른 서비스의 데이터에 접근하기 위해 사용자의 아이디와 비밀번호를 직접 입력받아 저장해야 했습니다. 이는 심각한 보안 문제를 야기했습니다.

⚠️ 기존 방식의 심각한 문제점

🔴 비밀번호 노출 — 앱이 사용자의 실제 비밀번호를 저장하므로, 해킹 시 모든 계정 정보가 유출됩니다.

🔴 과도한 권한 — 이메일 목록만 공유하고 싶어도, 비밀번호를 넘기면 계정의 전체 권한을 넘겨주게 됩니다.

🔴 취소의 어려움 — 권한 회수를 위해 비밀번호를 변경하면 연결된 모든 서비스가 끊어집니다.

OAuth는 이러한 문제를 해결하기 위해 '액세스 토큰(Access Token)'이라는 유효기간이 있는 별도의 열쇠를 발행합니다. 비밀번호 공유 없이도 안전하게 권한을 위임할 수 있도록 설계된 것이 OAuth의 핵심 철학입니다.

🧩 2. OAuth의 핵심 구성 요소 (4가지 역할)

OAuth 메커니즘을 이해하려면 등장인물을 파악하는 것이 중요합니다. RFC 6749에 정의된 주요 역할은 다음과 같습니다.

역할 설명 예시
👤 Resource Owner 데이터의 주인 (사용자) Google 계정 보유자
📱 Client 데이터에 접근하려는 서드파티 앱 뉴스 앱, 스케줄러
🗄️ Resource Server 사용자 정보가 저장된 서버 Google Drive, GitHub API
🔑 Authorization Server 동의 확인 후 토큰 발급 서버 Google OAuth Server

⚙️ 3. OAuth 2.0 동작 과정 (Authorization Code Grant)

가장 널리 사용되는 '권한 부여 코드 승인 방식(Authorization Code Grant)'의 전체 흐름을 단계별로 살펴보겠습니다.

1

권한 요청

사용자가 "Google로 로그인"을 클릭하면, 앱은 client_id, redirect_uri, scope를 포함하여 구글 인증 페이지로 리다이렉트합니다.

2

사용자 로그인 및 동의

사용자는 구글 페이지에서 직접 로그인하고 "이 앱이 이메일 정보를 읽도록 허용하시겠습니까?"에 동의합니다.

3

Authorization Code 발급

인증 서버는 토큰을 직접 주지 않고, 임시 코드(Authorization Code)를 앱의 redirect_uri로 전달합니다.

4

Access Token 교환

앱은 받은 코드 + 자신의 Client Secret을 인증 서버에 보내 실제 Access Token으로 교환합니다.

5

리소스 접근 ✅

앱은 토큰을 HTTP 헤더에 담아 리소스 서버에 요청하고, 사용자의 데이터를 안전하게 가져옵니다.

🔒 왜 코드를 한 번 거칠까?

Authorization Code를 중간에 두는 이유는 보안 강화입니다. 브라우저 URL에 토큰이 직접 노출되는 것을 방지하고, 서버 간 통신(back-channel)을 통해 안전하게 토큰을 교환합니다. 이를 통해 MITM(중간자) 공격 위험을 크게 줄일 수 있습니다.

🌐 4. OAuth 2.0의 다양한 Grant Type

Authorization Code Grant 외에도 상황에 따라 사용되는 여러 인가 방식이 있습니다.

Grant Type 사용 시나리오 보안 수준
Authorization Code 웹 앱, 서버사이드 앱 🟢 높음
Auth Code + PKCE SPA, 모바일 앱 (2026 권장) 🟢 높음
Client Credentials 서버 간 통신 (M2M) 🟡 보통
Device Code 스마트 TV, IoT 디바이스 🟡 보통

⚡ 2026년 트렌드: Implicit Grant는 OAuth 2.1 초안에서 공식 제거될 예정이며, 모든 공개 클라이언트(SPA, 모바일)는 PKCE(Proof Key for Code Exchange) 사용이 필수화되고 있습니다.

🏢 5. Google과 주요 서비스의 OAuth 적용 사례

구글을 비롯한 주요 플랫폼들은 모두 OAuth 2.0 표준을 적극 활용하고 있습니다.

🔵 Google OAuth

Google Cloud Console에서 프로젝트를 생성하고 OAuth 클라이언트 ID를 발급받아 사용합니다. googleapis.com/auth/userinfo.profile 같은 Scope를 통해 딱 필요한 정보만 요청할 수 있으며, 2026년부터 새 프로젝트는 기본적으로 세분화된 Scope(Granular Consent)가 적용됩니다.

⚫ GitHub OAuth

GitHub은 OAuth를 통해 서드파티 앱이 리포지토리, 이슈, PR 등에 접근하도록 허용합니다. Fine-grained Personal Access Token과 함께 사용하면 특정 리포지토리에 대해서만 최소한의 권한을 부여할 수 있습니다.

🟣 Anthropic / OpenAI

API 기반 서비스들은 주로 API Key 방식을 사용하지만, 서비스 통합이나 Google/Microsoft 계정으로의 로그인 시 OAuth가 필수적으로 수반됩니다. 최근에는 MCP(Model Context Protocol) 등에서 OAuth 기반 인증도 논의되고 있습니다.

🔍 6. 인증(Authentication) vs 인가(Authorization)

OAuth를 공부할 때 가장 많이 혼동하는 부분입니다. 두 개념을 명확히 구분해야 합니다.

🪪 인증 (Authentication)

"당신은 누구입니까?"를 확인하는 과정
→ ID/PW 로그인, 생체인증, MFA

🔑 인가 (Authorization)

"이 리소스에 접근할 권한이 있습니까?"를 확인하는 과정
→ OAuth가 담당하는 영역

OAuth는 본래 인가를 위한 프로토콜이지만, 이를 확장하여 인증까지 수행하도록 만든 표준이 OIDC(OpenID Connect)입니다. 우리가 흔히 말하는 "소셜 로그인"은 엄밀히 말하면 OAuth 2.0 위에 OIDC 레이어를 얹은 형태이며, ID Token(JWT)을 통해 사용자 신원을 확인합니다.

🛡️ 7. 개발자를 위한 실전 보안 체크리스트

OAuth를 구현할 때 반드시 지켜야 할 보안 사항들입니다.

HTTPS 필수 — 모든 통신은 반드시 TLS로 암호화합니다. 토큰이 평문으로 노출되면 즉시 탈취됩니다.

Redirect URI 화이트리스트 — 허용된 URI만 등록하고, 서버에서 엄격히 검증합니다. 와일드카드 사용은 피합니다.

State 파라미터 — CSRF 공격 방지를 위해 요청마다 고유한 임의 값을 생성하고 응답에서 검증합니다.

PKCE 적용 — 공개 클라이언트(SPA, 모바일)는 반드시 PKCE를 사용하여 Authorization Code 가로채기를 방지합니다.

토큰 만료 관리 — Access Token은 짧게(15분~1시간), Refresh Token은 적절하게 설정하고, 불필요 시 즉시 폐기합니다.

Scope 최소화 원칙 — 꼭 필요한 권한만 요청합니다. 과도한 Scope는 사용자 신뢰를 떨어뜨립니다.

📊 8. OAuth 토큰 비교: Access Token vs Refresh Token

구분 Access Token Refresh Token
목적 리소스 서버 접근 Access Token 재발급
수명 짧음 (15분~1시간) 김 (수일~수개월)
저장 위치 메모리 (추천) Secure HTTP-only Cookie
노출 시 위험 제한적 (짧은 수명) 심각 (장기 접근 가능)

🎯 마무리: OAuth가 만드는 신뢰의 웹 생태계

OAuth는 현대 웹 생태계를 연결하는 신뢰의 다리입니다. 사용자는 편리함을, 개발자는 보안 부담 경감을, 서비스 제공자는 데이터 생태계 확장의 기회를 얻습니다.

2026년 현재 OAuth 2.1 표준화가 진행 중이며, PKCE 필수화와 Implicit/Password Grant 제거 등 보안이 한층 강화되고 있습니다. 웹 서비스를 개발하는 모든 개발자에게 OAuth는 선택이 아닌 필수 교양입니다.

본 글에 포함된 정보는 일반적인 기술 교육 목적으로 작성되었으며, 특정 보안 솔루션의 도입을 권유하지 않습니다. 실제 시스템 구현 시에는 최신 보안 가이드라인과 전문가의 조언을 참고하시기 바랍니다.

📄 Raw Data
### OAuth란 무엇인가? 현대 웹 보안의 핵심 프로토콜 완벽 이해하기

우리가 웹사이트나 모바일 앱을 이용하다 보면 **"Google 계정으로 로그인"** 또는 **"Facebook으로 시작하기"**와 같은 버튼을 자주 마주하게 됩니다. 사용자는 별도의 회원가입 절차 없이 기존에 사용하던 서비스의 계정을 통해 새로운 서비스에 안전하게 접속할 수 있죠. 이 마법 같은 과정을 가능하게 만드는 기술적 표준이 바로 **OAuth (Open Authorization)**입니다.

많은 사람들이 OAuth를 단순한 '로그인 수단'으로 오해하곤 하지만, 정확히 말하면 OAuth는 **인가(Authorization)를 위한 개방형 표준 프로토콜**입니다. 즉, 특정 애플리케이션이 사용자의 비밀번호를 직접 알지 못해도, 사용자의 권한을 위임받아 데이터(프로필 사진, 이메일, 일정 등)에 접근할 수 있게 해주는 보안 체계입니다.

---

### 1. OAuth의 탄생 배경: 왜 필요한가?

OAuth가 등장하기 전에는 한 서비스가 다른 서비스의 데이터에 접근하기 위해 사용자의 **아이디와 비밀번호를 직접 입력받아 저장**해야 했습니다. 이는 심각한 보안 문제를 야기했습니다.

*   **비밀번호 노출:** 애플리케이션이 사용자의 실제 비밀번호를 저장하므로, 해당 서비스가 해킹당하면 사용자의 모든 계정 정보가 유출됩니다.
*   **과도한 권한:** 사용자는 '이메일 목록'만 공유하고 싶어도, 비밀번호를 넘겨주는 순간 해당 계정의 모든 권한을 애플리케이션에 넘겨주게 됩니다.
*   **취소의 어려움:** 권한을 회수하려면 사용자가 직접 비밀번호를 변경해야 하며, 이 경우 해당 계정을 사용하는 모든 서비스와의 연결이 끊어집니다.

OAuth는 이러한 문제를 해결하기 위해 **'액세스 토큰(Access Token)'**이라는 유효기간이 있는 별도의 열쇠를 발행하여, 비밀번호 공유 없이도 안전하게 권한을 위임할 수 있도록 설계되었습니다.

---

### 2. OAuth의 핵심 구성 요소 (Roles)

OAuth 메커니즘을 이해하기 위해서는 등장인물을 파악하는 것이 중요합니다. RFC 6749 문서에 정의된 주요 역할은 다음과 같습니다.

1.  **Resource Owner (사용자):** 데이터의 주인입니다. 자신의 구글 프로필이나 사진 등에 접근 권한을 부여하는 주체입니다.
2.  **Client (애플리케이션):** 사용자의 데이터에 접근하고자 하는 서드파티 앱(예: 뉴스 요약 봇, 스케줄러 앱)입니다.
3.  **Resource Server (데이터 서버):** 사용자의 정보가 저장되어 있는 서버(예: Google Drive, GitHub API)입니다.
4.  **Authorization Server (인증 서버):** 사용자의 동의를 확인하고 Client에게 토큰을 발급해주는 서버입니다.

---

### 3. OAuth 2.0의 동작 과정 (Authorization Code Grant 방식)

가장 널리 사용되는 '권한 부여 코드 승인 방식'의 흐름은 다음과 같습니다.

1.  **권한 요청:** 사용자가 앱에서 "Google로 로그인"을 클릭하면, 앱은 사용자를 구글의 인증 페이지로 리다이렉트합니다. 이때 `client_id`, `redirect_uri`, `scope`(접근 범위) 등을 함께 보냅니다.
2.  **사용자 로그인 및 동의:** 사용자는 구글 페이지에서 직접 로그인하고, "이 앱이 당신의 이메일 정보를 읽도록 허용하시겠습니까?"라는 질문에 동의합니다.
3.  **권한 부여 코드 발급:** 인증 서버는 앱에 직접 토큰을 주는 대신, **Authorization Code**라는 임시 코드를 앱의 `redirect_uri`로 전달합니다.
4.  **액세스 토큰 교환:** 앱은 전달받은 '코드'와 자신의 'Secret Key'를 가지고 인증 서버에 다시 접근하여, 실제 데이터를 가져올 수 있는 **Access Token**으로 교환합니다.
5.  **리소스 접근:** 이제 앱은 이 토큰을 헤더에 담아 리소스 서버에 요청을 보내고, 사용자의 데이터를 안전하게 가져옵니다.

---

### 4. Google과 Claude(Anthropic)의 OAuth 예시

구글과 클로드 같은 최신 서비스들은 모두 이 OAuth 2.0 표준을 따릅니다.

*   **Google OAuth:** Google Cloud Console에서 프로젝트를 생성하고 OAuth 클라이언트 ID를 발급받아 사용합니다. `https://www.googleapis.com/auth/userinfo.profile` 같은 **Scope**를 통해 딱 필요한 정보만 요청할 수 있습니다.
*   **Anthropic/Claude:** 클로드 자체는 API Key 방식을 주로 사용하지만, 이를 서비스에 통합하거나 구글 계정으로 클로드에 로그인할 때는 OAuth 과정이 필수적으로 수반됩니다.

---

### 5. 흔히 혼동하는 개념: 인증(Authentication) vs 인가(Authorization)

OAuth를 공부할 때 가장 많이 헷갈리는 부분입니다.

*   **인증(Authentication):** "당신은 누구입니까?"를 확인하는 과정입니다. (예: ID/PW 로그인)
*   **인가(Authorization):** "당신은 이 리소스에 접근할 권한이 있습니까?"를 확인하는 과정입니다.

OAuth는 본래 **인가**를 위한 프로토콜이지만, 이를 확장하여 **인증**까지 수행하도록 만든 표준이 바로 **OIDC (OpenID Connect)**입니다. 우리가 흔히 말하는 "소셜 로그인"은 엄밀히 말하면 OAuth 2.0 위에 OIDC 레이어를 얹은 형태입니다.

---

### 6. 개발자를 위한 실전 팁

OAuth를 구현할 때 주의해야 할 보안 사항들입니다.

*   **HTTPS 필수:** 토큰이 중간에 탈취되지 않도록 모든 통신은 반드시 암호화되어야 합니다.
*   **Redirect URI 검증:** 허용되지 않은 주소로 코드가 전달되지 않도록 서버 측에서 엄격하게 화이트리스트 관리를 해야 합니다.
*   **State 파라미터 사용:** CSRF(사이트 간 요청 위조) 공격을 방지하기 위해 요청 시 임의의 `state` 값을 보내고 응답 시 확인해야 합니다.
*   **토큰 만료 관리:** Access Token은 짧게 유지하고, 필요 시 Refresh Token을 사용하여 보안성을 높여야 합니다.

OAuth는 현대 웹 생태계를 연결하는 신뢰의 다리입니다. 사용자는 편리함을 얻고, 개발자는 보안 부담을 덜며, 서비스 제공자는 데이터 생태계를 확장할 수 있는 윈-윈(Win-Win) 기술이라 할 수 있습니다.
---

## References

- [RFC 6749 - The OAuth 2.0 Authorization Framework](https://datatracker.ietf.org/doc/html/rfc6749)
- [Google Identity Platform](https://developers.google.com/identity/protocols/oauth2)
- [OAuth.net Official Website](https://oauth.net/2/)

댓글

이 블로그의 인기 게시물

Vim 9.2 릴리즈 총정리: 더 빠르고 강력해진 텍스트 편집의 제왕

폐쇄망 SoC 설계자를 위한 가볍고 빠른 Vim 최적화 가이드

에이전트 시대를 위한 터미널 cmux 가이드: 설치부터 AI 활용까지