カテゴリ: Spring 更新日: 2026/05/23

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アノテーションは、Spring Securityで「この処理は誰が実行していいのか」をシンプルに指定できる仕組みです。 プログラミング未経験の方は、「特定の人だけが使える機能に鍵をかけるもの」と考えるとイメージしやすいでしょう。 ここでは、管理者だけが実行できる処理を例に、@Securedの基本的な書き方を確認します。


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

@Service
public class AdminService {

    // 管理者(ROLE_ADMIN)だけが実行できるメソッド
    @Secured("ROLE_ADMIN")
    public void performAdminTask() {
        System.out.println("管理者専用のタスクを実行中...");
    }
}

この例では、AdminServiceクラスのperformAdminTaskメソッドに @Secured("ROLE_ADMIN")を付けています。 これは「ROLE_ADMINという権限を持つユーザーだけが、このメソッドを実行できる」 という意味です。

もし一般ユーザー(管理者権限を持たない人)がこのメソッドを呼び出そうとすると、 Spring Securityが自動的にチェックを行い、処理は実行されません。 つまり、@Securedを付けるだけで、 自分でif文を書かなくても安全なアクセス制御ができるのが大きなメリットです。

このように、@Securedは「この処理は誰専用なのか」をコード上ではっきり示せるため、 初心者でも理解しやすく、実務でもよく使われる基本的な権限制御の方法です。

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の基本的な設定を理解し、簡単なロールベースのアクセス制御を実装してみることから始めると良いでしょう。

Spring FrameworkやThymeleafを使った Webアプリ開発の全体像をやさしく理解したい人には、 この入門書が定番です。

Spring Framework超入門をAmazonで見る

※ Amazon広告リンク

カテゴリの一覧へ
新着記事
New1
Java
JavaのStringクラス - substringとstartsWithメソッドの違いを徹底解説!初心者でもわかる文字列操作
更新記事
New2
Spring
SpringDataJPAのJPAクエリメソッド「OrderBy」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Java
JavaのStringクラスとreplaceAllメソッドを完全解説!初心者でも理解できる正規表現を使った文字列置換
更新記事
New4
Thymeleaf
Thymeleafのth:withの使い方を完全ガイド!初心者でもわかる一時変数の利用方法
更新記事
人気記事
No.1
Java&Spring記事人気No1
JSP
JSPのおすすめ学習・用語まとめ【2026年最新版】初心者が知っておきたい基本をやさしく解説
No.2
Java&Spring記事人気No2
Java
Javaのクラスとインスタンス化、コンストラクタの使い方完全ガイド!初心者でもわかるオブジェクト指向の基礎
No.3
Java&Spring記事人気No3
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.4
Java&Spring記事人気No4
Spring
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.5
Java&Spring記事人気No5
Spring
Javaの@PreAuthorizeアノテーションを完全ガイド!初心者でもわかるメソッドセキュリティ設定
No.6
Java&Spring記事人気No6
Spring
Springの@Queryアノテーションを徹底解説!初心者でもわかるSpring Bootのカスタムクエリ
No.7
Java&Spring記事人気No7
Java
JavaのExceptionクラスを完全解説!初心者でも理解できる例外処理の基本
No.8
Java&Spring記事人気No8
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本