41679


現在以下のようにGoogle Cloud Storageにある画像のフルパスを取得しています。

[code]

    $disk = Storage::disk('gcp');
    $url = $disk->url('test.jpg');
    
[/code]

そしてその取得したurlをimgタグに流し込んでいるのですが、画像が表示されません。  
なのでソースを表示して、imgタグに表示されたURLにアクセスしようとすると、「faild to load resource the server
responded with a status of 403」と表示されてしまいます。  
色々調べているとGoogle Cloud
Storageにアクセスする権限を追加しないといけないようなのですが、どうやって権限を追加すればいいか分かりません。  
Google Cloud PlatformのコンソールのStorage -> 設定 ->プロジェクト
アクセスにはIDがあり、これらを使うのではないかと思っているのですが、どうやって設定すればいいか分かりません。  
権限を付与してGoogle Cloud Storageから画像を引っ張れるようにするにはどうすればいいでしょうか？  
どなたか分かる方がいれば教えていただきたいです。よろしくお願いします。


CC BY-SA 3.0
2018-02-12T07:47:11.397
41665
2018-02-13T01:49:14.770
5210
question
php laravel google-cloud-storage
Google Cloud Storageから画像を引っ張ってこようとすると「faild to load resource the server responded with a status of 403」と表示される


Cloud Storageの認証方式はいくつかあるので、どのようなユースケースでの利用を想定しているかで少し変わります。  
とりあえず、一番簡単そうなものを書いておきます。

GCPの権限としては、アカウントとPermissionの組み合わせがあります。  
アカウントは二種類あり、Googleアカウントとサービスアカウントがあります。  
おそらくGCPではないどこかのマシンで動かすのではないかと思うので、その場合はサービスアカウントを利用します。  
まず、
<https://cloud.google.com/storage/docs/authentication?hl=ja#service_accounts>
の手順に従って、サービスアカウントを作成して、 `secret.json` をダウンロードします。  
その時に、サービスアカウントのPermissionとして、Storage Adminを指定してください。Storage
Adminは強い権限なので、必要に応じて権限を調整してください。

その後、 <https://cloud.google.com/sdk/gcloud/reference/auth/activate-service-
account?hl=ja> を利用して、サービスアカウントでログインした状態を作ります。 --key-file でダウンロードした
`secret.json` を指定すればOKです。

ユースケースをもう少し詳しく書いてもらえると、また違った方式がベストになるかもしれませんので、どこで動かすのか？だれがアクセスできて、だれがアクセスできないのか？などを教えてください。


CC BY-SA 3.0
2018-02-13T01:49:14.770
41679
2018-02-13T01:49:14.770
4361
41665
answer