본문 바로가기

나는개발자다!!/서버

구글 클라우드엔진 인증받고 사용하기 - Window썰

구글의 API를 활용해서 작업을 하려고 하는데

Firebase의 프로젝트들은 간단하게 사용이 가능했는데 gcloud 프로젝트들은 사용 인증을 코드 기반으로 하지 않고, 

암호화 키를 받아서 os레벨에서 path를 설정해서 인증처리를 하는 방식으로 구성을 해줘야한다. 

이 부분이 보안성은 매우 높을텐데 많이 사용해보지 않아서 구성에 애를 먹는 경우가 있을 듯 하여 정리해본다.

구글 계정과 사용할 API의 설정까지는 된 상태여야합니다.


Step1. Gcloud SDK 설치하기

Google Cloud SDK 설치하기로 이동하여 본인에게 맞는 OS의 SDK를 설치해야 합니다.

(참고로 Window 계열과 xnix계열은 path설정만 다르고 나머지는 다 동일합니다.

저는 Window를 기준으로 작성합니다.)


Step2. 로그인하기

CMD 창 혹은 google cloud sdk shell에서 다음의 명령어를 실행하여 로그인을 진행합니다.


해당 명령어를 실행하면 chrome 창이 열리면 연결 시킬 계정을 선택 할 수 있습니다.


연결 시킬 계정을 선택해서 권한을 허용해주시면 Local에서 클라우드 엔진을 사용할 계정과 연결이 됩니다.


Step3. 로그인 한 계정으로 API 사용 권한 부여하기

(보안을 조금 배우신 분이라면 인증과 인가에 대해서 아실텐데요. 

쉽게 생각하면 인증이란 로그인하는 행위이고, 인가라는건 로그인 된 사용자에게 부여하는 권한입니다.)


서비스 계정 키를 눌러주시고


서비스 계정 이름과 유형은 JSON으로 선택해서 만들면 JSON 파일을 다운로드 받을 수 있습니다.

생성되는 KEY는 꼭 잘 보관해주세요 중요합니다.


Step4. path 설정

(Max OS나 xnix 등은 .bashrc나 profile 등에서 path를 잡아주시면 됩니다. 중요한 것은 다음의 변수명으로 path가 설정되야 한다는 점 뿐입니다.)

GOOGLE_APPLICATION_CREDENTIALS 이라는 변수명으로 path를 설정해주시고, 값은 방금 다운받은 json을 잡아주시면 됩니다.

ex) GOOGLE_APPLICATION_CREDENTIALSc:\dev\my_key.json

path 설정이 끝났으면 다음의 명령어를 통하여 application login을 진행합니다.

Y를 클릭하면 역시 계정 연결과 권한 부여 메시지가 나옵니다. Y로 진행하세요


여기까지 하면 구글 클라우드 인증이 완료 됩니다. 

소스 코드에서는 인증, 인가에 관련된 코드가 나오지 않아도 해당 PC에서는 인가 된 권한의 API를 이용 가능합니다. 클라우드 서비스들은 이런 방식의 인증, 인가를 많이 사용합니다.


최종실습. 위에서의 셋팅이 제대로 되었는지 소스코드를 통해서 확인해보겠습니다.

(자바를 기준으로 작성합니다.)


//[START translate_quickstart]
//Imports the Google Cloud client library
import com.google.cloud.translate.Translate;
import com.google.cloud.translate.Translate.TranslateOption;
import com.google.cloud.translate.TranslateOptions;
import com.google.cloud.translate.Translation;
/**
* 클래스에 대한 설명을 여기에 쓴다.
*
* @author sjc0502
* @since 2019. 3. 14.
* @version 1.0
* @see <pre>
* == 개정이력(Modification Information) ==
*
* 수정일 수정자 수정내용
* ---------------------------------------------------------------------------------
* 2019. 3. 14. sjc0502 최초생성
*
* </pre>
*/
public class QuickstartSampleTranslation {
public static void main(String... args) throws Exception {
// Instantiates a client
Translate translate = TranslateOptions.getDefaultInstance().getService();
// The text to translate
String text = "Hello, world!";
// Translates some text into Russian
Translation translation =
translate.translate(
text,
TranslateOption.sourceLanguage("en"),
TranslateOption.targetLanguage("ko"));
System.out.printf("Text: %s%n", text);
System.out.printf("Translation: %s%n", translation.getTranslatedText());
}
}

다음을 실행하면 프로그래밍의 기본인 안녕! 세상!을 볼 수 있습니다.