カテゴリ: Spring 更新日: 2026/02/25

Springの@Securedアノテーションの使い方を完全ガイド!初心者でもわかるセキュリティ設定

Springの@Securedアノテーション
Springの@Securedアノテーション

先生と生徒の会話形式で理解しよう

生徒

「先生、Springの@Securedアノテーションって何ですか?」

先生

@SecuredはSpring Securityのアノテーションで、特定のメソッドにアクセスできるユーザーのロール(権限)を設定するためのものなんだよ。」

生徒

「ロールって、管理者とか一般ユーザーみたいなものですか?」

先生

「そうだね。例えば、管理者だけが実行できるメソッドを@Secured("ROLE_ADMIN")と指定しておけば、一般ユーザーはそのメソッドにアクセスできなくなるんだ。」

生徒

「それは便利ですね!具体的な使い方を教えてください。」

先生

「では、サンプルコードを使って解説していくよ!」

1. @Securedアノテーションとは?

「1. @Securedアノテーションとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. @Securedアノテーションとは?
1. @Securedアノテーションとは?

@Securedアノテーションは、Spring Securityが提供する「メソッド単位でのアクセス制御」を行うための仕組みです。簡単に言うと、「この処理は、特定の権限を持つ人だけが実行できるようにする」というルールを、コードに直接書けるアノテーションです。

Webアプリでは、すべてのユーザーに同じ操作を許可すると危険なケースがあります。例えば「管理画面の操作」「データの削除」「重要な設定変更」などは、誰でも実行できてはいけません。@Securedを使うことで、こうした重要な処理を安全に守ることができます。

プログラミング未経験の方は、「入口にカギをかけるイメージ」をすると分かりやすいです。@Securedは、メソッドという部屋の前に置くカギのような存在で、正しいロール(権限)を持っているユーザーだけが中に入れます。

例えば、次のように書くと「管理者だけが実行できる処理」を表現できます。


import org.springframework.security.access.annotation.Secured;

public class SampleService {

    @Secured("ROLE_ADMIN")
    public void adminOnlyAction() {
        System.out.println("管理者だけが実行できる処理です");
    }
}

この例では、ROLE_ADMINという権限を持っていないユーザーがadminOnlyActionを実行しようとすると、自動的にアクセスが拒否されます。複雑な条件分岐を書く必要がなく、シンプルにセキュリティ対策を実装できるのが@Securedの大きな特徴です。

2. @Securedアノテーションの基本的な使い方

2. @Securedアノテーションの基本的な使い方
2. @Securedアノテーションの基本的な使い方

まずは、@Securedアノテーションを使ったシンプルな例を見てみましょう。管理者のみがアクセスできるメソッドを定義します。


import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Service;

@Service
public class AdminService {

    @Secured("ROLE_ADMIN")
    public void performAdminTask() {
        System.out.println("管理者専用のタスクを実行中...");
    }
}

このAdminServiceクラスのperformAdminTaskメソッドは、ROLE_ADMIN権限を持つユーザーのみが実行できるようになります。

3. @Securedアノテーションを使うための設定

3. @Securedアノテーションを使うための設定
3. @Securedアノテーションを使うための設定

次に、@Securedアノテーションを使用するために、いくつかの設定が必要です。@EnableGlobalMethodSecurityアノテーションを使用して、メソッドセキュリティを有効にします。


import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class SecurityConfig {
    // セキュリティ設定の追加が可能
}

この設定をSecurityConfigクラスに追加することで、@Securedアノテーションが有効になります。

4. 具体的な利用シナリオ

「4. 具体的な利用シナリオ」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. 具体的な利用シナリオ
4. 具体的な利用シナリオ

例えば、ユーザーの管理機能を持つWebアプリケーションで、管理者のみがユーザー削除機能を使用できるようにしたい場合、以下のように@Securedアノテーションを使用します。


import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Secured("ROLE_ADMIN")
    public void deleteUser(Long userId) {
        System.out.println("ユーザーID " + userId + " を削除しました");
    }
}

このdeleteUserメソッドは、管理者権限を持つユーザーのみが実行可能です。一般ユーザーがアクセスしようとすると、アクセス拒否されます。

5. 実行結果を確認してみよう

5. 実行結果を確認してみよう
5. 実行結果を確認してみよう

では、実際にSpring Bootアプリケーションを起動して、AdminServiceのメソッドにアクセスしてみましょう。管理者権限のあるユーザーとして実行した場合は以下のような出力が得られます。


管理者専用のタスクを実行中...

一方、権限がないユーザーで実行すると、以下のようなエラーメッセージが表示されます。


Access is denied (user is not authorized)

6. 複数のロールを指定する場合

6. 複数のロールを指定する場合
6. 複数のロールを指定する場合

@Securedアノテーションでは、複数のロールを指定することも可能です。例えば、以下のように設定すれば、管理者とモデレーターの両方がメソッドにアクセスできるようになります。


@Secured({"ROLE_ADMIN", "ROLE_MODERATOR"})
public void manageContent() {
    System.out.println("コンテンツ管理タスクを実行中...");
}

このようにカンマで区切って複数の権限を指定することで、複数のユーザーグループにアクセス権を与えることができます。

7. まとめ

「7. まとめ」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. まとめ
7. まとめ

今回は、@Securedアノテーションの使い方について詳しく解説しました。@Securedは、Spring Securityのメソッドレベルのセキュリティ制御に非常に便利なアノテーションです。メソッドごとにアクセス権限を設定することで、アプリケーションのセキュリティを細かく管理することが可能になります。
例えば、管理者のみが実行できるメソッドを@Secured("ROLE_ADMIN")と設定することで、誤って一般ユーザーが実行することを防ぐことができます。また、複数のロールを指定することもでき、柔軟なアクセス制御が可能です。
@EnableGlobalMethodSecurityアノテーションとsecuredEnabled = trueの設定を追加するだけで簡単に利用できるため、Springアプリケーションのセキュリティを強化したい場合にはぜひ活用してみてください。特に、企業向けのWebアプリケーションでは、このようなメソッド単位のセキュリティ制御が必須となる場面が多く、非常に役立ちます。

さらに、ユーザーの役割に応じたアクセス制御は、システムの安定性とセキュリティ向上に直結します。
例えば、管理者権限のあるユーザーはユーザー管理機能にアクセスできるが、一般ユーザーにはアクセス権がないように設定できます。
@Securedアノテーションは設定が簡単で、柔軟に適用できるため、これからSpring Securityを導入するプロジェクトにおすすめです。

サンプルプログラムで再確認しよう


import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Service;

@Service
public class ContentService {

    // 管理者またはモデレーターのみ実行可能
    @Secured({"ROLE_ADMIN", "ROLE_MODERATOR"})
    public void moderateContent() {
        System.out.println("コンテンツの管理を行っています...");
    }

    // 一般ユーザーが利用できるメソッド
    public void viewContent() {
        System.out.println("コンテンツを表示しています...");
    }
}

この例では、moderateContentメソッドは管理者とモデレーターのみが実行でき、viewContentメソッドはすべてのユーザーがアクセス可能です。このように、必要に応じて権限を細かく設定できる点が@Securedの強みです。

先生と生徒の振り返り会話

生徒

@Securedアノテーションを使うと、メソッド単位でアクセス制御ができるんですね!」

先生

「その通りです。メソッド単位でロールベースのアクセス制御が簡単に実装できるので、セキュリティを強化したいときに便利ですよ。」

生徒

「設定も@EnableGlobalMethodSecurityを追加するだけで、すぐに使えるのが良いですね。」

先生

「その通りです。また、複数のロールをカンマ区切りで指定すれば、異なる権限を持つユーザーにも柔軟に対応できます。」

生徒

「これで、ユーザーごとに異なる機能を提供するアプリケーションのセキュリティが向上しそうです!」

先生

「その意気です!ぜひ自分のプロジェクトでも試してみてください。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

@Securedアノテーションとは何ですか?

@Securedは、Spring Securityで提供されるアノテーションで、メソッド単位でユーザーのロール(権限)に基づくアクセス制御を設定するために使用されます。

@Securedアノテーションを使うメリットは何ですか?

@Securedを使用すると、簡単にメソッドごとにアクセス制限を設定でき、セキュリティの強化や不正アクセスの防止が可能です。

@Securedを有効にするためには何を設定すれば良いですか?

Spring Securityの設定クラスに@EnableGlobalMethodSecurity(securedEnabled = true)を追加する必要があります。

@Securedで複数のロールを指定するにはどうすれば良いですか?

@Secured({"ROLE_ADMIN", "ROLE_MODERATOR"})のように、カンマ区切りで複数のロールを指定できます。

@Securedを使った具体例を教えてください。

管理者専用のタスクを実行するメソッドに@Secured("ROLE_ADMIN")を付与することで、ROLE_ADMIN権限を持つユーザーのみが実行可能になります。

@Securedと@EnableGlobalMethodSecurityはどう関係していますか?

@Securedを使用するには、@EnableGlobalMethodSecurityでsecuredEnabledをtrueに設定する必要があります。この設定でメソッドレベルのセキュリティが有効化されます。

@Securedと@PreAuthorizeの違いは何ですか?

@Securedはロールベースのシンプルなアクセス制御に適しており、@PreAuthorizeはより柔軟で複雑な条件を設定できる点が違いです。

@Securedを使用する際の注意点は何ですか?

ロール名は大文字で記述し、Spring Securityで設定されたロールと正確に一致させる必要があります。また、メソッドレベルでの設定が全体のセキュリティポリシーと矛盾しないように注意してください。

@Securedを使うことでどのようなアプリケーションに適用できますか?

@Securedは、管理者やモデレーターなど、異なる権限を持つユーザーに異なる機能を提供する必要があるアプリケーションで役立ちます。

初心者が@Securedを学ぶ際に最初に取り組むべきことは何ですか?

まずは、Spring Securityの基本的な設定を理解し、簡単なロールベースのアクセス制御を実装してみることから始めると良いでしょう。
カテゴリの一覧へ
新着記事
New1
Spring
Spring Securityの新標準!SecurityFilterChainとHttpSecurity DSLの書き方を初心者向けに解説
更新記事
New2
Java
Javaの抽象クラス(abstract)を完全ガイド!継承と設計のルールを学ぶ
更新記事
New3
Servlet
JavaのGenericServletクラスのgetInitParameterNamesメソッドを徹底解説!初心者でもわかる初期化パラメータの取得方法
更新記事
New4
JSP
JSPとは何か?初心者向けにできること・仕組み・特徴をやさしく解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.3
Java&Spring記事人気No3
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.4
Java&Spring記事人気No4
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.5
Java&Spring記事人気No5
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.6
Java&Spring記事人気No6
Java
Java開発環境「Eclipse(Pleiades)」のインストール方法とメリットを初心者向けに解説
No.7
Java&Spring記事人気No7
Spring
Spring BootとVS Codeで開発を始めよう!拡張機能・launch.json・ホットリロードを丁寧に解説
No.8
Java&Spring記事人気No8
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門